我正在使用Eclipse Buildship V2.1.2 for Gradle。我有两个独立的Web项目,P1和P2以及一个项目P3,它作为所有其他项目的依赖项。我的任务是创建一个主构建,我可以用它来构建和生成来自P1和P2的WAR文件以及来自P3的JAR文件。我应该将这个P3 jar文件包含为P1和P2的依赖项。我创建了一个具有以下结构的composite-build
复合项目
P1
P2
的build.gradle
settings.gradle
复合项目 - > build.gradle:
task run {
println "Tasks: services"
dependsOn gradle.includedBuild('P1').task(':run')
dependsOn gradle.includedBuild('P2).task(':run')
dependsOn gradle.includedBuild('P3).task(':run')
}
复合项目 - > settings.gradle:
rootProject.name = 'services'
includeBuild 'P1'
includeBuild 'P2'
includeBuild 'P3'
P1 - >的build.gradle
apply plugin: 'war'
defaultTasks 'run'
task run {
println "Tasks: cluster"
buildDir = new File(rootProject.projectDir, "gradleBuild/" + project.name)
}
现在,如果我运行'Composite-project'的构建,则会配置所有项目,但不会创建WAR文件和JAR文件。仅当为该项目运行构建时才会创建war文件。如何完成这项任务?
答案 0 :(得分:0)
我有一个类似的案例并且像这样解决了。
首先为每个项目定义buildAll
任务:
task buildAll(type: GradleBuild) {
tasks = [ 'build' ]
}
然后为复合项目定义根buildAll
任务:
task buildAll {
dependsOn gradle.includedBuilds*.task(':buildAll')
}
之后调用gradle buildAll
将构建所有嵌套项目,您将获得所需的构建工件。
另见
GitHub上有the example,我是专门针对这个案例准备的。