發佈多個子項目罐子我有一個gradle這個多項目(JAVA)在同一地點
ROOT | -subA | -subB | -subC
我成功地配置我的根版本。 gradle和gradle.settings來解決依賴關係並構建整個項目OK。
但隨後所有廣口瓶在SUBX生產/建造/庫(其中X = A,B,C)
有一種方法在端部(與運行時資源也)重新集結一切 所以一切都是準備運送?
發佈多個子項目罐子我有一個gradle這個多項目(JAVA)在同一地點
ROOT | -subA | -subB | -subC
我成功地配置我的根版本。 gradle和gradle.settings來解決依賴關係並構建整個項目OK。
但隨後所有廣口瓶在SUBX生產/建造/庫(其中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
}
}
}
}
感謝您的幫助。我是Groovy DSL的新手,我並不完全理解某些命令的含義。我查看了「同步」任務規範,因此我理解「入」和「從」方法。但我還有一個問題:爲什麼我們使用Jar類型的任務來查找要同步的jar文件?如果我還想複製主要sourceSets資源,你會如何找到thoses文件? – facewindu
你爲什麼想要?它們被包含在罐子裏。你的意思是第三方依賴? –
正確的是他們在罐子裏:)謝謝 – facewindu