【发布时间】:2014-02-25 15:40:22
【问题描述】:
我有一个 gradle 多项目(java)
根 |-子A |-subB |-subC
我已成功配置我的根 build.gradle 和 gradle.settings 以解决依赖关系并构建整个项目 OK。
然后所有 jars 都在 subX/build/libs 中生成(X=A,B,C)
有没有办法在最后重新组合所有内容(也包括运行时资源) 所以一切都准备好发货了吗?
【问题讨论】:
我有一个 gradle 多项目(java)
根 |-子A |-subB |-subC
我已成功配置我的根 build.gradle 和 gradle.settings 以解决依赖关系并构建整个项目 OK。
然后所有 jars 都在 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
}
}
}
}
【讨论】: