首页 文章

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

提问于
浏览
0

我有一个gradle项目,主要使用java插件 . 在subproj1 - thru subproj4下,build.gradle文件也在使用应用程序插件 . 它适用于子项目以编译jar(使用主类)并创建分发zipfile(使用资源和dist文件) .

现在我想构建一个'main'dist zip文件,包含所有这些子项目内容 . 我发现我可以运行installDist解压缩到每个子项目build / install / subprojN

现在主要是在主要的损失howto,有一个任务和/或依赖创建一个“主”dist zip文件包含:subproj1 / ** subproj2 / ** subproj3 / ** subproj4 / **

我的想法是从('.').include('subproj * / build / install / / ')复制然后将其压缩 . 但还没有想出如何只在主要级别添加任务,加上它没有抱怨:没有来源

提前致谢

1 回答

  • 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
    

相关问题