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 <[EMAIL PROTECTED]> wrote:

> On 29 Sep 2008, at 13:22, Mark Hobson wrote:
>
>  2008/9/29 Dominic Mitchell <[EMAIL PROTECTED]>:
>>
>>> 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
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


-- 
-- Lee Meador
Sent from gmail. My real email address is lee AT leemeador.com

Reply via email to