import java.util.zip.ZipFile apply plugin: 'base' configurations { osgi { canBeResolved true } } dependencies { osgi project(':svnkit') osgi project(':svnkit-javahl16') osgi project(':svnkit-osgi') } ext { if (rootProject.release && rootProject.buildNumber.startsWith("snapshot")) { bundleVersion = rootProject.version.replace('-snapshot', '.snapshot').replace('-', '.') } else { bundleVersion = rootProject.version.replace('-SNAPSHOT', '.SNAPSHOT').replace('-', '.') + (rootProject.release ? '.' : '_') + buildNumber } tokens = [svnkit_name : rootProject.group, svnkit_fullName : "${rootProject.group}_${bundleVersion}", svnkit_version : bundleVersion] } def exportPackages() { def packages = new HashSet() configurations.osgi.each { def entries = new ZipFile(it).entries() while(entries.hasNext()) { def entryName = entries.nextElement().getName() if (!entryName.endsWith(".class") || entryName.indexOf('/') < 0) { continue } entryName = entryName.substring(0, entryName.lastIndexOf('/')) entryName = entryName.replace('/', '.') packages.add(entryName.trim()) } } return packages.collect { "${it};version=\"${bundleVersion }\"" }.join(",") } tasks.register('pluginJar', Jar) { dependsOn configurations.osgi destinationDirectory = layout.buildDirectory.dir("site/plugins") archiveFileName = "${project.group}_${bundleVersion}.jar" from { configurations.osgi.collect { it.isDirectory() ? it : zipTree(it) } } doFirst { manifest { attributes ( 'Bundle-SymbolicName': project.group, 'Bundle-Version': bundleVersion, 'Bundle-Vendor': 'TMate Software', 'Bundle-Name': 'SVNKit pure Java (tm) Subversion Library', 'Bundle-RequiredExecutionEnvironment' : 'JavaSE-1.8', 'Bundle-Activator' : 'org.tmatesoft.svn.core.SVNKitActivator', 'Bundle-ActivationPolicy' : 'lazy', 'Build-Version' : rootProject.version, 'Build-Number' : rootProject.buildNumber, 'Eclipse-BundleShape' : 'jar', 'Require-Bundle': 'org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)"', 'Export-Package': exportPackages() ) } } } tasks.register('featureJar', Jar) { archiveFileName = "${project.group}_${bundleVersion}.jar" destinationDirectory = layout.buildDirectory.dir("site/features") expand(tokens) from 'src/main/features/svnkit' } tasks.register('site', Copy) { dependsOn 'pluginJar' dependsOn 'featureJar' from 'src/main/site.xml' into layout.buildDirectory.dir("site") expand(tokens) } tasks.register('siteArchive', Zip) { dependsOn 'site' archiveFileName = "${project.group}_${project.version}.eclipse.zip" destinationDirectory = layout.buildDirectory.dir("distributions") from layout.buildDirectory.dir("site") } build { dependsOn 'siteArchive' }