我正在尝试使用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个独立项目的复合构建,而它们的共享核心仅构建一次?
对不起,如果这是一个愚蠢的问题,但是我真的很不熟悉,无法解决这个问题。
谢谢您的帮助。