我有一个主要使用 java 插件的 gradle 项目。在 subproj1 - 到 subproj4 的 build.gradle 文件也使用应用程序插件。它在子项目中可以很好地编译 jars(使用主类)并创建分发 zipfile(使用资源和 dist 文件)。
现在我想构建一个“主”dist zip 文件,其中包含所有这些 subproj 内容的内容。我发现我可以运行 installDist 解压缩到每个子项目 build/install/subprojN
现在只在主要方面不知所措,有一个任务和/或依赖项来创建一个“主要”dist zip文件,其中包含:subproj1/** subproj2/** subproj3/** subproj4/**
我的想法是复制 from('.').include('subproj*/build/install// ')
然后拉上 zipper 。但还没有弄清楚如何仅在主级别添加任务,而且不要提示:NO SOURCE
提前致谢
最佳答案
这里举个例子,只用了两个子项目,没有展示main
的编译代码。这些东西应该很容易添加。解决方案的关键是zip
和 zipfileset
通过 AntBuilder。
主要考虑这个 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
关于gradle 压缩子项目分发文件的主要任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46696532/