mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-15 16:28:56 +00:00
76 lines
2.3 KiB
Groovy
76 lines
2.3 KiB
Groovy
/*
|
|
* 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
|
|
}
|
|
}
|