2014-02-25 131 views
0

發佈多個子項目罐子我有一個gradle這個多項目(JAVA)在同一地點

ROOT | -subA | -subB | -subC

我成功地配置我的根版本。 gradle和gradle.settings來解決依賴關係並構建整個項目OK。

但隨後所有廣口瓶在SUBX生產/建造/庫(其中X = A,B,C)

有一種方法在端部(與運行時資源也)重新集結一切 所以一切都是準備運送?

回答

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:除了某些情況下,需要極大的靈活性,這是更好地使用CopySync任務比project.copy方法。

+0

感謝您的幫助。我是Groovy DSL的新手,我並不完全理解某些命令的含義。我查看了「同步」任務規範,因此我理解「入」和「從」方法。但我還有一個問題:爲什麼我們使用Jar類型的任務來查找要同步的jar文件?如果我還想複製主要sourceSets資源,你會如何找到thoses文件? – facewindu

+0

你爲什麼想要?它們被包含在罐子裏。你的意思是第三方依賴? –

+0

正確的是他們在罐子裏:)謝謝 – facewindu

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 
      } 
     } 
    } 
}