我有一个gradle多项目(java)
根|-子A|-子B|-子C
我成功地配置了我的根build.gradle和gradle.settings来解决依赖关系并构建整个项目OK。
但是所有的jar都是在subX/build/libs中产生的(X=A,B,C)
有没有办法在最后重新组合所有内容(也有运行时资源)所以一切都准备好发货了吗?
您的解决方案存在一些问题:任务依赖项不正确,不会删除过时的 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
方法。
在 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
}
}
}
}