使用gradle的3个项目的综合构建无法正常工作

时间:2018-09-19 21:08:14

标签: java gradle build

我正在尝试使用gradle创建复合构建。我有3个项目,可以说它们分别是A,B和C。它们共享一些模块,并且由于我不想gradle构建相同的共享模块,所以这是我尝试创建复合构建的三次。他们有非常复杂的build.gralde和settings.gradle文件,这就是为什么我不能简单地使用gradle进行多个项目的构建。我在settings.gradle中创建了top-project,其中包含此内容:

rootProject.name = 'top-project'

includeBuild 'A'
includeBuild 'B'
includeBuild 'C'

我的build.gradle看起来像这样。

task buildAll {
    dependsOn gradle.includedBuild('A').task(':build')
    dependsOn gradle.includedBuild('B').task(':build')
    dependsOn gradle.includedBuild('C').task(':build')
}

每个项目-可以使用./PROJECT_NAME/gradlew build命令来构建A,B和C。但是,当我尝试运行定义的任务./gradlew buildAll时,出现以下错误:

Task with path ':build' not found in project ':B'

我认为这是因为项目B在他的build.gradle文件中没有定义任务构建,但是他的子项目具有此任务,这就是为什么它将被构建的原因。

当我尝试运行类似于以下内容的顶级build.gradle时:

dependsOn gradle.includedBuild('subproject-of-B').task(':build')

我会收到类似Project with path ... could not be found ...的错误,因为它确实知道./B/.settings.gradle等中定义的某些属性。

所以我的问题是,我如何轻松地创建这3个独立项目的复合构建,而它们的共享核心仅构建一次?

对不起,如果这是一个愚蠢的问题,但是我真的很不熟悉,无法解决这个问题。

谢谢您的帮助。

0 个答案:

没有答案