Ludvig
Ludvig

Reputation: 3

How do I get the version of Xtend at runtime

When I want to get the runtime version of Java, i use:

String version = System.getProperty("java.version");

But there is no property "xtend.version". How do I get the runtime version in Xtend.

Upvotes: 0

Views: 86

Answers (1)

kapex
kapex

Reputation: 29959

Since there is no such property, you could try to load the version from the Xtend Runtime Library's manifest.

If you are running in an OSGi environment (e.g. Eclipse plugins), it should be rather straight-forward:

val Bundle bundle = Platform.getBundle("org.eclipse.xtend.lib")
val Version version = bundle.getVersion()

If running as a regular Java application, then this works for me and prints something like 2.30.0.v20230227-1111:

val manifests = ClassLoader.systemClassLoader.getResources("META-INF/MANIFEST.MF")

for (manifestUrl : manifests.asIterator.toList) {
    try (val stream = manifestUrl.openStream) {
        val manifest = new Manifest(stream)
        val attributes = manifest.mainAttributes
        val bundleSymbolicName = attributes.getValue("Bundle-SymbolicName")
        
        if (bundleSymbolicName == "org.eclipse.xtend.lib") {
            println(attributes.getValue("Bundle-Version"))
        }
    }
}

Upvotes: 0

Related Questions