我有一个带有gradle构建的项目A.我还有另一个带有gradle构建的项目B.我想将项目B的jar包含在项目A的战争中。我可以从项目A的构建脚本中调用项目B的构建脚本(见下文)
但我不能将项目B的jar设置为任务buildB
的输出文件。
有没有办法将项目B的jar(任务jar的输出文件)设置为任务buildB的输出文件?
task buildB(type: GradleBuild) {
buildFile = "../BProject/build.gradle"
tasks = ["clean", "jar"] // jar task produce xxx.jar as it's outputs.files
// HERE, any script to set xxx.jar as outputs.files of task buildB???
}
war {
from (buildB) { // can not get xxx.jar from buildB
into "WEB-INF/classes"
}
}
答案 0 :(得分:2)
您可能需要配置multi module项目并定义project范围依赖项。
由于答案完整答案很长,here您可以找到演示如何完成答案的演示。
该演示包含两个项目。一个项目是为战争而建立的,并且依赖于另一个为战争而建造的项目。如果您构建 a 项目, b 将自动构建并包含在jar中。
答案 1 :(得分:0)
This is what I did.
/settings.gradle
include 'AProject', 'BProject'
/AProject/build.gradle
task buildB(type: GradleBuild) {
buildFile = "../BProject/build.gradle"
tasks = ["clean", "jar"] // jar task produce xxx.jar as it's outputs.files
}
war {
dependsOn buildB
doFirst {
from (project(':BProject').tasks['jar']) {
into "WEB-INF/classes"
}
}
}