我正在使用Eclipse Buildship V2.1.2 for Gradle。我有两个独立的Web项目P1和P2,还有一个项目P3,它充当所有其他项目的依赖项。我的任务是创建一个主版本,通过它我可以从P1和P2生成WAR文件,从P3生成JAR文件。我应该将此P3 jar文件包含为P1和P2的依赖项。我用以下结构创建了一个composite-build
,
复合项目
build.gradle
settings.gradle
Composite-project-> 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')
}
Composite-project-> 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文件。如何完成这项任务?
最佳答案
我有一个类似的情况,并解决了这个问题。
首先为每个项目定义一个buildAll
任务:
task buildAll(type: GradleBuild) {
tasks = [ 'build' ]
}
然后为复合项目定义一个根
buildAll
任务:task buildAll {
dependsOn gradle.includedBuilds*.task(':buildAll')
}
之后,调用
gradle buildAll
将构建所有嵌套项目,您将获得所需的构建 Artifact 。另请参见
GitHub上有the example,我专门为这种情况准备的。
关于gradle - 如何在Gradle中为复合项目创建WAR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47344983/