2017-10-11 65 views
0

我有一個gradle項目,主要是使用java插件。在subproj1 - 通過子程序build.gradle文件也使用應用程序插件。它在子項目中運行良好,可以編譯jar(帶有主類)並創建分發zip文件(使用資源和dist文件)。gradle主要任務zipup子項目分佈文件

現在我想構建一個'main'dist zip文件,包含所有這些subproj內容的內容。我發現我可以運行installDist來解壓縮到每個子項目build/install/subprojN

現在不知所措,只有主要的,有一個任務和/或依賴創建一個「主要」dist zip文件,其中包含: subproj1/** subproj2/** subproj3/** subproj4/**

我的想法是從做一個副本( ' ')。包括(' subproj * /編譯/安裝/ /') 然後將其壓縮。但還沒有想出HOWTO添加任務只在主要的水平,再加上有它不會抱怨:沒有源

在此先感謝

回答

0

下面是一個例子,僅僅使用兩個子項目,並沒有顯示彙編代碼main。這些東西應該很容易添加。解決方案的關鍵是通過AntBuilder的zipzipfileset

build.gradle考慮一下:

task uberBuild(dependsOn: ['subProj1:build', 
          'subProj2:build']) { 
    doLast { 
     ant.mkdir(dir: "${projectDir}/dist") 
     def PATH = "build/distributions" 

     ant.zip(destfile: "${projectDir}/dist/uber.zip") { 
      zipfileset(src: "${projectDir}/subProj1/${PATH}/subProj1.zip") 
      zipfileset(src: "${projectDir}/subProj2/${PATH}/subProj2.zip") 
     } 
    } 
} 

這將寫~/dist/uber.zip,其中有內容:

$ jar tf dist/uber.zip 
subProj1/ 
subProj1/bin/ 
subProj1/lib/ 
subProj1/bin/subProj1 
subProj1/bin/subProj1.bat 
subProj1/lib/subProj1.jar 
subProj2/ 
subProj2/bin/ 
subProj2/lib/ 
subProj2/bin/subProj2 
subProj2/bin/subProj2.bat 
subProj2/lib/subProj2.jar 
+0

布拉沃。正是我想要的。認爲適當的gradle可以處理它...又一個需要ant功能的例子。好吧。 –