如何在Gradle为复合项目创建WAR?
我正在为Gradle使用EclipseBuildship V2.1.2。我有两个独立的web项目,P1和P2,还有一个项目P3,它作为所有其他项目的依赖项。我的任务是创建一个主构建,我可以用它从P1和P2构建和生成WAR文件,从P3生成JAR文件。我应该包括这个p3jar文件作为P1和P2的依赖项。我创建了一个具有以下结构的如何在Gradle为复合项目创建WAR?,gradle,buildship,Gradle,Buildship,我正在为Gradle使用EclipseBuildship V2.1.2。我有两个独立的web项目,P1和P2,还有一个项目P3,它作为所有其他项目的依赖项。我的任务是创建一个主构建,我可以用它从P1和P2构建和生成WAR文件,从P3生成JAR文件。我应该包括这个p3jar文件作为P1和P2的依赖项。我创建了一个具有以下结构的复合构建 组合项目 P1 格雷德尔先生 格雷德尔酒店 P2 格雷德尔先生 格雷德尔酒店 P3 格雷德尔先生 格雷德尔酒店 格雷德尔先生 apply plugi
复合构建
组合项目
- P1
- 格雷德尔先生
- 格雷德尔酒店
- P2
- 格雷德尔先生
- 格雷德尔酒店
- P3
- 格雷德尔先生
- 格雷德尔酒店
apply plugin: 'war'
defaultTasks 'run'
task run {
println "Tasks: cluster"
buildDir = new File(rootProject.projectDir, "gradleBuild/" + project.name)
}
格雷德尔酒店
组合项目->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')
}
组合项目->设置.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)
}
现在,如果我运行“复合项目”的构建,所有项目都已配置,但WAR文件和JAR文件未创建。仅当为该项目运行生成时,才会创建war文件。如何完成这项任务 我有一个类似的案例,我就是这样解决的 首先为每个项目定义
buildAll
任务:
task buildAll(type: GradleBuild) {
tasks = [ 'build' ]
}
然后为复合项目定义根buildAll
任务:
task buildAll {
dependsOn gradle.includedBuilds*.task(':buildAll')
}
之后,调用gradlebuildall
将构建所有嵌套项目,您将获得所需的构建工件
另请参见
还有一个是我专门为这个案例准备的GitHub。你需要运行
build
任务来准备工件为什么run
?我是新手。我假设任务运行已经执行并确认,其中包含打印内容。我还假设将创建在任务运行中给出的构建目录。我是否应该指定新任务来创建战争地点?是否建议使用此项目结构?在eclipse中,将其他项目放置在复合项目中并不会提供包探索结构。或者我应该将所有项目都放在复合项目之外,然后直接引用它吗?使用run
中的print
,您应该假设任务是配置的,而不是实际执行的。阅读有关配置与执行的信息。有一个war
插件,你可以应用它并使用它。您的项目是由eclipse驱动的吗?我使用LunaEclipse4.4。每次运行任务时,我都使用gradletasks
并右键单击build(复合项目的构建)->rungradletasks。我得到的输出是:war-update
。但WAR文件未创建。如果我在P1构建中也这样做,我会得到war文件。我是做错了还是每次我需要使用特定项目的构建?