当前位置: 首页 > 知识库问答 >
问题:

Gradle任务不在所有子项目中运行

百里泓
2023-03-14

我有以下多模块项目结构。

Root project 'reports-be'
+--- Project ':auth'
+--- Project ':builder'
|    +--- Project ':builder:base'
|    \--- Project ':builder:reporting'
\--- Project ':common'

当我为/builder子项目运行任务时,我希望所有子项目都会执行任务(对于:builder:base和:builder:reporting)。

gradle clean :builder:build

但gradle只为子项目执行构建任务。根据Gradle文档,应完成所有子项目的构建任务。

为什么不发生呢?

P、 我发现命令gradle-P builder clean build正如我所期望的那样工作。但我真的不明白第一个提到的gradle任务有什么错。

P、 S.S.我有构建。在每个子项目和我的设置中进行渐变。gradle看起来像

rootProject.name = 'reports-be'
include 'common'
include 'builder'
include 'auth'
include 'builder:base'
include 'builder:reporting'

共有2个答案

戴树
2023-03-14

我发现了三种可能的解决方案:

1.gradle-p builder清洁构建

2:

cd ./builder
gradle clean build

添加对生成器/构建的修改。gradle(为gradle 6.3工作):

build {
    dependsOn ':builder:base:build', ':builder:reporting:build'
}

然后从根项目目录运行gradle clean build。感谢您提供此解决方案Lukas Korfer的回答

云丰
2023-03-14

: builder: build是项目: builder中任务build的限定任务名称,因此只会执行这一个任务(及其依赖项)。所有(子)项目中的执行仅适用于作为build的不合格任务名称。您可以切换到builder目录并从那里运行gradle build,但是如果您想在同一调用中为所有项目运行清洁,这种方法将不起作用,并且在使用包装器(gradlew)时有点难看。据我所知,您的用例没有直接的解决方案。

如果我没说错的话,那么构建器项目只是一个用于组织目的的虚拟项目,不包含任何实际的源代码或任何其他要构建的内容。在这种情况下,您可以使用构建器/内部的任务依赖关系来解决问题。格拉德尔:

task build {
    dependsOn ':builder:base:build', ':builder:reporting:build'
}
 类似资料:
  • 我有一个这样的多项目构建 现在,在项目中,我已经为所有子项目声明了一个任务,如下所示: 当我运行时,我得到的输出类似于以下内容(其他内容): 现在,我尝试像这样为简单项目运行该任务 我得到的输出是: 失败:构建失败,但有一个异常。 > 哪里出错了:在项目中找不到任务你好:例子:简单项目。一些候选人是:帮助。 尝试:运行gradle任务以获取可用任务的列表。使用--stack跟踪选项来获取堆栈跟踪。

  • 我面临以下问题。我有一个多模块的Gradle项目。一个模块是我的根项目,第二个模块是集成测试。 为了让我的集成测试运行,复制任务需要首先运行,以便将一些资产移动到项目根目录上的文件夹中。 我已经在我的根项目上定义了这样一个任务,当我试图调用它时,它什么也不做(我尝试了几种不同的调用方式)。 由于失败,我继续在子项目本身上创建了以下任务: 这是我的另一个任务。我的目标是让它将根项目类以及在下生成的j

  • 在我的多项目中,我正在根项目上运行测试任务,并期望它将在子项目上运行测试任务并生成一个测试报告。我观察到的是,它从来没有在子项目上运行测试任务。我的期望是不正确的吗?“我需要在我的gradle脚本中进行任何特殊配置吗? 请注意,我的根项目中没有测试。

  • 我以为这会起作用,但事情一定发生了变化(或者我犯了某种错误) 根据父项目的任务,gradle子项目任务的语法是什么? 我在根级别上有以下任务(即子项目闭包之外和所有项目闭包之外)。 我得到的错误是 然后我猜了几件事包括这个 但那给了我错误 版本信息因此

  • 我很久以前就问过这个问题.... 有没有办法在Gradle中列出任务依赖关系?

  • 为了提出这个问题,我有一个简单的子项目定义为: 我真的希望能够在一个单独的子项目中引用完整的输出jar名称。 比如: 我可以在这里的文档中看到JAR任务具有archiveName属性:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar