task buildAll { doLast { File dstDir = layout.buildDirectory.file("all").get().asFile dstDir.mkdirs() copy { into new File(dstDir, "svnkit-${project.version}") into('lib') { from configurations.binaries.files exclude '**/*.asc' eachFile { f -> f.name = build_jar_name(f.file) } } into('bin') { from project(':svnkit-cli').file('build/scripts') exclude '**/logging.properties' } into('src') { from configurations.sources.files } into('licenses') { from file('src/main/licenses') } into ('conf') { from project(':svnkit-cli').file('build/scripts') include '**/logging.properties' rename { String filename -> return filename + '.disabled' } } from rootProject.files('LICENSE.txt', 'README.txt', 'CHANGES.txt') } File destfile = new File(new File("${buildDir}/${distsDirName}"), "org.tmatesoft.svn_${project.version}.standalone.zip") ant.zip(destfile: destfile.absolutePath) { zipfileset(dir: dstDir.absolutePath, excludes: '**/bin/**') zipfileset(dir: dstDir.absolutePath, includes: '**/bin/**', excludes: '**/bin/*.bat', filemode: '755') zipfileset(dir: dstDir.absolutePath, includes: '**/bin/*.bat') } File destfileNoJNA = new File(new File("${buildDir}/${distsDirName}"), "org.tmatesoft.svn_${project.version}.standalone.nojna.zip") ant.zip(destfile: destfileNoJNA.absolutePath) { zipfileset(dir: dstDir.absolutePath, excludes: '**/bin/**,**/jna*,**/platform*,**/jsch*,**/LICENSE-JNA.txt,**/LICENSE-JSCH.txt') zipfileset(dir: dstDir.absolutePath, includes: '**/bin/**', excludes: '**/bin/*.bat', filemode: '755') zipfileset(dir: dstDir.absolutePath, includes: '**/bin/*.bat') } } } tasks.register('buildSources', Zip) { archiveFileName = "org.tmatesoft.svn_${project.version}.src.zip" into("svnkit-${project.version}") from rootProject.rootDir exclude '.*' exclude '**/.*' exclude '**/.*/**' exclude '**/build/**' exclude '**/bin/**' exclude '**/target/**' } buildAll.dependsOn tasks.clean buildAll.dependsOn configurations.binaries buildAll.dependsOn configurations.sources buildAll.dependsOn(':svnkit-cli:jar') build { dependsOn buildAll, buildSources } import java.util.jar.* static def read_manifest(file) { def result = [:] result['File-Name'] = file.getName() def jar = new JarFile(file) try { def manifest = jar.getManifest() if (manifest != null) { manifest.getMainAttributes().each { k,v -> result.put(k.toString(), v) } } } finally { jar.close() } return result } static def build_jar_name(file) { def fileProps = read_manifest(file) def fileBuildVersion = fileProps.get('Build-Version') def fileBuildNumber = fileProps.get('Build-Number') if (fileBuildVersion != null && (fileBuildVersion.endsWith('-SNAPSHOT') || fileBuildVersion.endsWith('-EAP'))) { if (fileBuildNumber != null) { return file.name.substring(0, file.name.length() - '.jar'.length()) + '_' + fileBuildNumber + '.jar' } } return file.name }