Alan Jurgensen
Alan Jurgensen

Reputation: 853

gradle main task to zipup sub-projects distribution files

I have a gradle project which at main is using java plugin. At subproj1 - thru subproj4 the build.gradle files are also using application plugin. It works well in sub projects to compile the jars (with a main class) and create a distribution zipfile (using resources and dist files).

Now I want to build a 'main' dist zip file, comprising of the contents of all those subproj contents. I found I can run installDist to unzip to each of the subprojects build/install/subprojN

Now at a loss howto in the main only, have a task and/or dependency to create a "main" dist zip file containing: subproj1/** subproj2/** subproj3/** subproj4/**

My thoughts are to do a copy from('.').include('subproj*/build/install//') then zip that up. but havent figured out howto add the task only at main level, plus have it not complain: NO SOURCE

thanks in advance

Upvotes: 1

Views: 760

Answers (1)

Michael Easter
Michael Easter

Reputation: 24468

Here's an example that just uses two sub-projects, and does not show the compilation of the main code. That stuff should be easy to add. The key to the solution is the zip and zipfileset via the AntBuilder.

Consider this in the main 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") 
        }
    }
}

This will write ~/dist/uber.zip, which has the contents:

$ 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

Upvotes: 0

Related Questions