Thanks for this solution :)
I am considering where I should put the version (in a Java file, a
property file or in the build.xml)
The pros and the cons:
1) in build.xml:
I don't like it because :
- two files are modified and need to be committed when the version is
changed (build.xml and java).
- requires to run Ant to put the correct version in the program. I am
working under Eclipse, so Ant is only used when I need to make a
distribution.
2) in a property file:
Seems better.
Need to modify the program and the build file at first, but after only
one property file.
2) in the Java file:
That was my first idea.
Need to modify only the build file at first, and after only the java
file.
After your first mail, I had a look at <filterchain> and found an other
way to do it.
It doesn't require bcel, because I can directly parse the java source
code.
Not very elegant, but works:
<loadfile srcfile="constants.java"
property="version">
<filterchain>
<linecontainsregexp>
<regexp pattern='public final static String version = ".*";'/>
</linecontainsregexp>
<tokenfilter>
<replaceregex pattern='public final static String version
= "(.*)";'
replace='\1'/>
</tokenfilter>
</filterchain>
</loadfile>
Well,
thanks a lot for the ideas
Have to decide what way to go with ;)
Nicolas
De: RADEMAKERS Tanguy <[EMAIL PROTECTED]>
> Sorted - i didn't have the bcel.jar in my lib folder. Added it and it
> works fine.
>
> Sooooooooooo - Nicolas, *if* you have bcel.jar installed, you can use
> the example below to get your version string out of your file!
>
> (but you shouldn't ;)
>
> /t
>
> >-----Original Message-----
> >From: RADEMAKERS Tanguy
> >Sent: Tuesday, September 20, 2005 8:26 PM
> >To: 'Ant Users List'
> >Subject: RE: Extracting application version from Java file
> >
> >Hello List,
> >
> >I was going to reply to Nicolas that, whilst i agree with the
> >other two replies (you should pass the version in somehow and
> >not read it from the java source file), you *can* achieve what
> >he is trying to do using the <loadproperties> task with a
> >nested <classconstants> filterchain. But i can't seem to get
> >it to work. I've posted my example below, can anybody see what
> >i'm doing wrong?
> >
> >------mytest.java----
> >public class mytest
> >{
> > public static final String VERSION = "XX.YY.ZZ";
> >
> > public static void main(String[] args)
> > {
> > System.out.println("Hello, World!");
> > }
> >}
> >
> >------build.xml----
> ><project name="test" default="main" basedir=".">
> >
> > <target name="main">
> >
> > <javac srcdir="."
> > destdir="."
> > includes="mytest.java"/>
> >
> > <loadproperties srcfile="mytest.class">
> > <filterchain>
> > <classconstants/>
> > </filterchain>
> > </loadproperties>
> >
> > <echo>${VERSION}</echo>
> >
> > </target>
> >
> ></project>
> >
> >i get a "Unable to load file: java.io.IOException" message.
> >I've tried putting a static properties file and loading that -
> >no probs. I've tried copying the class to a properties file by
> >using the classconstants filterchain... didn't work (same error).
> >
> >/t
>
> -------------------------------------------------------------------
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]