我有一个gradle项目,主要是使用java插件。在subproj1 - thru subproj4下,build.gradle文件也在使用应用程序插件。它适用于子项目以编译jar(使用主类)并创建分发zipfile(使用资源和dist文件)。
现在我想建立一个主要的' dist zip文件,包含所有子项目内容。我发现我可以运行installDist解压缩到每个子项目build / install / subprojN
现在主要处于亏损状态,只需要创建一个" main" dist zip文件包含:subproj1 / ** subproj2 / ** subproj3 / ** subproj4 / **
我的想法是从('。')中复制.include(' subproj * / build / install / / ') 拉上那个。但还没有弄清楚如何只在主要级别添加任务,加上它没有抱怨:没有来源
提前致谢
答案 0 :(得分:0)
这是一个仅使用两个子项目的示例,并未显示main
代码的编译。这些东西应该很容易添加。解决方案的关键是通过AntBuilder zip
和zipfileset
。
在主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