atom feed6 messages in org.apache.maven.usersRe: Accessing project version number ...
FromSent OnAttachments
Dominic MitchellSep 29, 2008 5:03 am 
Brett PorterSep 29, 2008 5:08 am 
Mark HobsonSep 29, 2008 5:22 am 
Dominic MitchellSep 29, 2008 5:31 am 
Dominic MitchellSep 29, 2008 5:36 am 
Lee MeadorSep 29, 2008 5:16 pm 
Subject:Re: Accessing project version number from Java
From:Lee Meador (le@leemeador.com)
Date:Sep 29, 2008 5:16:28 pm
List:org.apache.maven.users

I use this little snippet inside ant build.xml target named versionProperties to generate a Java file that gets compiled and provides a constant (as ProgramVersion.VERSION):

<property name="generated.src.dir" location="${basedir}/target/generated-sources/java" /> <echo file="${generated.src.dir}/com/company/version/ProgramVersion.java"> package com.company.version; /** Generated in ANT */ public class ProgramVersion { public static final String VERSION = "${program.version}"; } </echo>

Then this goes inside the <build><plugins> section of the pom:

<plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <property name="program.version" value="${pom.version}"></property> <ant antfile="build.xml" dir="." target="versionProperties" inheritRefs="true" /> </tasks> <sourceRoot>

${project.build.directory}/generated-sources/java </sourceRoot> </configuration> </execution> </executions> </plugin>

No need to use the pom.version value to set it but you do have to not put a double-quote or a newline in there.

It works.

-- Lee

On Mon, Sep 29, 2008 at 7:37 AM, Dominic Mitchell <do@semantico.com> wrote:

On 29 Sep 2008, at 13:22, Mark Hobson wrote:

2008/9/29 Dominic Mitchell <do@semantico.com>:

What's the easiest way to get at the version number in the POM from Java?

I've been using getResourceAsStream('META-INF/maven/groupId/artifactId/pom.properties'); But this doesn't work while I'm developing in Eclipse (only when using the built jar file).

You can use maven-runtime to dynamically obtain this information, but it still has the limitation of requiring the META-INF files created at package-time:

http://maven.apache.org/shared/maven-runtime/

Aha! Thanks for pointing this out. That's much more useful than rolling my own implementation of such a thing.

I'd quite like to see the generation of these metadata files occur at

the generate-resources phase of the lifecycle which would allow it work within the IDE too.

-Dom