gradle主要任务来压缩子项目分发文件

时间:2017-10-11 19:59:07

标签: gradle

我有一个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 / / ') 拉上那个。但还没有弄清楚如何只在主要级别添加任务,加上它没有抱怨:没有来源

提前致谢

1 个答案:

答案 0 :(得分: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