我有一个gradle多项目(java)
ROOT | -subA | -subB | -subC
我成功配置了我的root build.gradle和gradle.settings以解决依赖关系并构建整个项目OK。
但是所有的罐子都是在subX / build / libs中产生的(X = A,B,C)
有没有办法在最后重新组合所有内容(还有运行时资源) 所以一切都准备好了吗?
答案 0 :(得分:1)
您的解决方案存在一些问题:任务依赖性不正确,过时的Jar文件将不会被删除,并且无法保证找到所有Jar
个任务。 (后者可以使用project.tasks.withType(Jar).all
而不是.each
来修复。)以下是更准确的解决方案:
task deploy(type: Sync) {
into "$buildDir/deploy"
for (subproject in subprojects) {
from subproject.tasks.withType(Jar)
}
}
PS:除了需要最大灵活性的某些情况外,最好使用Copy
或Sync
任务而不是project.copy
方法。
答案 1 :(得分:0)
在gradle在线帮助中找到答案(虽然它在某种程度上没有真正标记为找到它)
task deploy(dependsOn: assemble) << {
File deployDist = mkdir("$buildDir/deploy")
subprojects.each {project ->
project.tasks.withType(Jar).each {archiveTask ->
copy {
from archiveTask.archivePath
into deployDist
}
}
}
}