/* * The MANIFEST.MF files of this project are maintained manually. We have to make sure * that the Bundle-Version entries have the current timestamp in their qualifier using * the same format as generated by Tycho for Eclipse plug-ins. We also have to generate * a proper MANIFEST.MF for the source bundles. */ def baseVersion = project.version if (baseVersion.endsWith('-SNAPSHOT')) baseVersion = baseVersion.substring(0, baseVersion.length() - 9) else if (baseVersion.split('\\.').length == 4) baseVersion = baseVersion.substring(0, baseVersion.lastIndexOf('.')) def qualifiedVersion = baseVersion + '.v' + buildTime //------------------------------------------------------ // Copy the existing manifest and insert the qualifier ext.manifestReplacements = new HashMap() manifestReplacements.put(baseVersion + '.qualifier', qualifiedVersion) def manifestFile = "$buildDir/tmp/jar/MANIFEST.MF" task genManifest(type: Copy) { from "META-INF/MANIFEST.MF" into "$buildDir/tmp/jar/" doLast { def f = new File(manifestFile) def text = f.text for (e in manifestReplacements.entrySet()) { text = text.replace(e.key, e.value) } def writer = new PrintWriter(f) writer.print(text) writer.close() } } jar { dependsOn genManifest inputs.file(manifestFile) manifest { from manifestFile } } //------------------------------------------------------ // Generate a manifest for the source bundle def sourcesManifestFile = "$buildDir/tmp/sourcesJar/MANIFEST.MF" task genSourcesManifest { outputs.file(sourcesManifestFile) doLast { def f = new File(sourcesManifestFile) f.parentFile.mkdirs() def writer = new PrintWriter(f) writer.println("Manifest-Version: 1.0") writer.println("Bundle-ManifestVersion: 2") writer.println("Bundle-SymbolicName: ${project.name}.source") writer.println("Bundle-Version: ${qualifiedVersion}") if (project.hasProperty('title')) writer.println("Bundle-Name: ${project.title} Sources") else writer.println("Bundle-Name: Sources") writer.println("Bundle-Vendor: Eclipse Xtext") writer.println("Eclipse-SourceBundle: ${project.name};version=\"${qualifiedVersion}\"") writer.close() } } sourcesJar { dependsOn genSourcesManifest inputs.file(sourcesManifestFile) manifest { from sourcesManifestFile } }