RE: Build data in built artifacts

2006-08-23 Thread Patrick Linskey
Since there are multiple jars, maybe it makes sense for each of the
different modules to have a META-INF/openjpa-revision.properties file,
and then have OpenJPAVersion print out the information for each of said
resources in the classpath, if they're not the same.

-Patrick 

-- 
Patrick Linskey
BEA Systems, Inc. 

 -Original Message-
 From: Marc Prud'hommeaux [mailto:[EMAIL PROTECTED] On 
 Behalf Of Marc Prud'hommeaux
 Sent: Tuesday, August 22, 2006 7:46 PM
 To: open-jpa-dev@incubator.apache.org
 Subject: Re: Build data in built artifacts
 
 
 I've gone ahead and committed something that does Bryan's 
 suggestion:  
 generates a /META-INF/revision.properties file and outputs the  
 current Subversion revision number to it.
 
 The org.apache.openjpa.conf.OpenJPAVersion class will load that file  
 and store it in the static REVISION_NUMBER field, as well 
 as output  
 it when the main() method of that class is run.
 
 It's not perfect, but it's better than not having the information at  
 all. In the future, we might want to think about writing a Maven  
 plugin that does this a little more smoothly.
 
 
 On Aug 22, 2006, at 2:11 PM, Bryan Noll wrote:
 
  I dorked with it some more, and got it to the point where it wrote  
  out a properties file with the subversion revision info in 
 it (a la  
  David's example)... but then ran into a wall in terms of getting  
  the scope of that property to hang around long enough to stuff it  
  into.  I hopped on the #maven irc at codehaus... and asked  
  around... and it seems like it is simply not possible as of now.
  The only option I got was to manually create a MANIFEST.MF file  
  that is under subversion control, then filter it so the correct  
  value gets put in that way, but it seems cumbersome to me to have  
  to manually maintain all those files.
 
  The next best thing would be to simply stuff a an openjpa- 
  version.properties file in the jar that contains a line like:
 
  svn-revision=433722
 
  Seems like a hack because its not actually going in the manifest  
  where it would be ideal... but I guess the information is 
 still there.
 
  I'm not sure I like either of those options...
 
  Marc Prud'hommeaux wrote:
  Bryan-
 
  FYI, I had played with this a little while ago ... I got the  
  subversion revision number using the maven-antrun-plugin and  
  xmlproperty task to parse the .svn/entries file, but I couldn't  
  figure out how to pass the value of the property from the ant  
  plugin to the global Maven properties so that it could be later  
  embedded using the maven-jar-plugin. If you have any ideas on how  
  to do this (maybe even by writing out a file from ant and reading  
  it back in with Maven), that'd be great.
 
  This xmlproperty code that I wrote is actually still in the top- 
  level pom.xml, it's just commented out.
 
 
 
  On Aug 14, 2006, at 2:14 PM, Bryan Noll wrote:
 
  Patrick...
 
  Looks like the OpenJPA version number is already getting tossed  
  in there as:
 
  Implementation-Version: 0.9.0
 
  We can stuff a subversion revision number in there by using  
  'maven-jar-plugin'... I just have to play with it a bit in order  
  to get a latest and greatest rev number.
 
  Bryan Noll wrote:
  Lemme take a crack at it...
 
  Patrick Linskey wrote:
  Hi,
 
  I think it'd be nice if each of the modules could encode svn  
  revision
  number and OpenJPA version number information into the 
 built jars,
  presumably in a manifest entry. Does anyone have any knowledge  
  about how
  to coerce this type of info into jars in a mvn environment?
 
  -Patrick
 
 
 
 
 
 
 
___
Notice:  This email message, together with any attachments, may contain
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
entities,  that may be confidential,  proprietary,  copyrighted  and/or
legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient,
and have received this message in error, please immediately return this
by email and then delete it.


Re: Build data in built artifacts

2006-08-23 Thread Marc Prud'hommeaux


Interesting idea, although we'd need some way to figure our the names  
of the different resources or jars (possibly by the addition of a  
generic OpenJPAModule class or something that exists in each module).  
I would be hesitant to do it just so each jar could report the  
revision from a command-line utility, but if there are other possible  
uses for such a system that people can think of, it might be worth  
doing.



On Aug 23, 2006, at 9:35 AM, Patrick Linskey wrote:


Since there are multiple jars, maybe it makes sense for each of the
different modules to have a META-INF/openjpa-revision.properties file,
and then have OpenJPAVersion print out the information for each of  
said

resources in the classpath, if they're not the same.

-Patrick

--
Patrick Linskey
BEA Systems, Inc.


-Original Message-
From: Marc Prud'hommeaux [mailto:[EMAIL PROTECTED] On
Behalf Of Marc Prud'hommeaux
Sent: Tuesday, August 22, 2006 7:46 PM
To: open-jpa-dev@incubator.apache.org
Subject: Re: Build data in built artifacts


I've gone ahead and committed something that does Bryan's
suggestion:
generates a /META-INF/revision.properties file and outputs the
current Subversion revision number to it.

The org.apache.openjpa.conf.OpenJPAVersion class will load that file
and store it in the static REVISION_NUMBER field, as well
as output
it when the main() method of that class is run.

It's not perfect, but it's better than not having the information at
all. In the future, we might want to think about writing a Maven
plugin that does this a little more smoothly.


On Aug 22, 2006, at 2:11 PM, Bryan Noll wrote:


I dorked with it some more, and got it to the point where it wrote
out a properties file with the subversion revision info in

it (a la

David's example)... but then ran into a wall in terms of getting
the scope of that property to hang around long enough to stuff it
into.  I hopped on the #maven irc at codehaus... and asked
around... and it seems like it is simply not possible as of now.
The only option I got was to manually create a MANIFEST.MF file
that is under subversion control, then filter it so the correct
value gets put in that way, but it seems cumbersome to me to have
to manually maintain all those files.

The next best thing would be to simply stuff a an openjpa-
version.properties file in the jar that contains a line like:

svn-revision=433722

Seems like a hack because its not actually going in the manifest
where it would be ideal... but I guess the information is

still there.


I'm not sure I like either of those options...

Marc Prud'hommeaux wrote:

Bryan-

FYI, I had played with this a little while ago ... I got the
subversion revision number using the maven-antrun-plugin and
xmlproperty task to parse the .svn/entries file, but I couldn't
figure out how to pass the value of the property from the ant
plugin to the global Maven properties so that it could be later
embedded using the maven-jar-plugin. If you have any ideas on how
to do this (maybe even by writing out a file from ant and reading
it back in with Maven), that'd be great.

This xmlproperty code that I wrote is actually still in the top-
level pom.xml, it's just commented out.



On Aug 14, 2006, at 2:14 PM, Bryan Noll wrote:


Patrick...

Looks like the OpenJPA version number is already getting tossed
in there as:

Implementation-Version: 0.9.0

We can stuff a subversion revision number in there by using
'maven-jar-plugin'... I just have to play with it a bit in order
to get a latest and greatest rev number.

Bryan Noll wrote:

Lemme take a crack at it...

Patrick Linskey wrote:

Hi,

I think it'd be nice if each of the modules could encode svn
revision
number and OpenJPA version number information into the

built jars,

presumably in a manifest entry. Does anyone have any knowledge
about how
to coerce this type of info into jars in a mvn environment?

-Patrick










__ 
_
Notice:  This email message, together with any attachments, may  
contain
information  of  BEA Systems,  Inc.,  its subsidiaries  and   
affiliated
entities,  that may be confidential,  proprietary,  copyrighted   
and/or
legally privileged, and is intended solely for the use of the  
individual
or entity named in this message. If you are not the intended  
recipient,
and have received this message in error, please immediately return  
this

by email and then delete it.




RE: Build data in built artifacts

2006-08-23 Thread Patrick Linskey
I guess I wasn't that clear. I was thinking that each jar would use the
same name (META-INF/openjpa-revision.properties), and then the
OpenJPAVersion code would do something like:

Enumeration urls = getClass().getClassLoader()
.getResources(META-INF/openjpa-revision.properties); 
Map revisions = new HashMap();
String firstRevision = null;
boolean revisionsSame = true;
while (urls.hasMoreElements()) {
URL url = (URL) urls.nextElement();
String revision = getRevision(url);
revisions.put(url, revision);

if (firstRevision != null)
revisionsSame = firstRevision.equals(revision);
else
firstRevision = revision;
}

if (revisionsSame)
out.println(revision:  + firstRevision);
else
out.println(revisions:  + revisions);


I prefer using META-INF/openjpa-revision.properties to just
META-INF/revision.properties because someone else might have a resource
called META-INF/revision.properties in the classpath, but it seems
vanishingly unlikely that META-INF/openjpa-revision.properties is used
by others.

Thoughts?

-Patrick

-- 
Patrick Linskey
BEA Systems, Inc. 

 -Original Message-
 From: Marc Prud'hommeaux [mailto:[EMAIL PROTECTED] On 
 Behalf Of Marc Prud'hommeaux
 Sent: Wednesday, August 23, 2006 9:43 AM
 To: open-jpa-dev@incubator.apache.org
 Subject: Re: Build data in built artifacts
 
 
 Interesting idea, although we'd need some way to figure our 
 the names  
 of the different resources or jars (possibly by the addition of a  
 generic OpenJPAModule class or something that exists in each 
 module).  
 I would be hesitant to do it just so each jar could report the  
 revision from a command-line utility, but if there are other 
 possible  
 uses for such a system that people can think of, it might be worth  
 doing.
 
 
 On Aug 23, 2006, at 9:35 AM, Patrick Linskey wrote:
 
  Since there are multiple jars, maybe it makes sense for each of the
  different modules to have a 
 META-INF/openjpa-revision.properties file,
  and then have OpenJPAVersion print out the information for each of  
  said
  resources in the classpath, if they're not the same.
 
  -Patrick
 
  -- 
  Patrick Linskey
  BEA Systems, Inc.
 
  -Original Message-
  From: Marc Prud'hommeaux [mailto:[EMAIL PROTECTED] On
  Behalf Of Marc Prud'hommeaux
  Sent: Tuesday, August 22, 2006 7:46 PM
  To: open-jpa-dev@incubator.apache.org
  Subject: Re: Build data in built artifacts
 
 
  I've gone ahead and committed something that does Bryan's
  suggestion:
  generates a /META-INF/revision.properties file and outputs the
  current Subversion revision number to it.
 
  The org.apache.openjpa.conf.OpenJPAVersion class will load 
 that file
  and store it in the static REVISION_NUMBER field, as well
  as output
  it when the main() method of that class is run.
 
  It's not perfect, but it's better than not having the 
 information at
  all. In the future, we might want to think about writing a Maven
  plugin that does this a little more smoothly.
 
 
  On Aug 22, 2006, at 2:11 PM, Bryan Noll wrote:
 
  I dorked with it some more, and got it to the point where it wrote
  out a properties file with the subversion revision info in
  it (a la
  David's example)... but then ran into a wall in terms of getting
  the scope of that property to hang around long enough to stuff it
  into.  I hopped on the #maven irc at codehaus... and asked
  around... and it seems like it is simply not possible as of now.
  The only option I got was to manually create a MANIFEST.MF file
  that is under subversion control, then filter it so the correct
  value gets put in that way, but it seems cumbersome to me to have
  to manually maintain all those files.
 
  The next best thing would be to simply stuff a an openjpa-
  version.properties file in the jar that contains a line like:
 
  svn-revision=433722
 
  Seems like a hack because its not actually going in the manifest
  where it would be ideal... but I guess the information is
  still there.
 
  I'm not sure I like either of those options...
 
  Marc Prud'hommeaux wrote:
  Bryan-
 
  FYI, I had played with this a little while ago ... I got the
  subversion revision number using the maven-antrun-plugin and
  xmlproperty task to parse the .svn/entries file, but I couldn't
  figure out how to pass the value of the property from the ant
  plugin to the global Maven properties so that it could be later
  embedded using the maven-jar-plugin. If you have any ideas on how
  to do this (maybe even by writing out a file from ant and reading
  it back in with Maven), that'd be great.
 
  This xmlproperty code that I wrote is actually still in the top-
  level pom.xml, it's just commented out.
 
 
 
  On Aug 14, 2006, at 2:14 PM, Bryan Noll wrote:
 
  Patrick...
 
  Looks like the OpenJPA version number is already getting tossed
  in there as:
 
  Implementation-Version: 0.9.0
 
  We can stuff a subversion revision number in there by using
  'maven-jar-plugin'... I just have

Re: Build data in built artifacts

2006-08-22 Thread Bryan Noll
I dorked with it some more, and got it to the point where it wrote out a 
properties file with the subversion revision info in it (a la David's 
example)... but then ran into a wall in terms of getting the scope of 
that property to hang around long enough to stuff it into.  I hopped on 
the #maven irc at codehaus... and asked around... and it seems like it 
is simply not possible as of now. 

The only option I got was to manually create a MANIFEST.MF file that is 
under subversion control, then filter it so the correct value gets put 
in that way, but it seems cumbersome to me to have to manually maintain 
all those files.


The next best thing would be to simply stuff a an 
openjpa-version.properties file in the jar that contains a line like:


svn-revision=433722

Seems like a hack because its not actually going in the manifest where 
it would be ideal... but I guess the information is still there.


I'm not sure I like either of those options...

Marc Prud'hommeaux wrote:

Bryan-

FYI, I had played with this a little while ago ... I got the 
subversion revision number using the maven-antrun-plugin and 
xmlproperty task to parse the .svn/entries file, but I couldn't figure 
out how to pass the value of the property from the ant plugin to the 
global Maven properties so that it could be later embedded using the 
maven-jar-plugin. If you have any ideas on how to do this (maybe even 
by writing out a file from ant and reading it back in with Maven), 
that'd be great.


This xmlproperty code that I wrote is actually still in the top-level 
pom.xml, it's just commented out.




On Aug 14, 2006, at 2:14 PM, Bryan Noll wrote:


Patrick...

Looks like the OpenJPA version number is already getting tossed in 
there as:


Implementation-Version: 0.9.0

We can stuff a subversion revision number in there by using 
'maven-jar-plugin'... I just have to play with it a bit in order to 
get a latest and greatest rev number.


Bryan Noll wrote:

Lemme take a crack at it...

Patrick Linskey wrote:

Hi,

I think it'd be nice if each of the modules could encode svn revision
number and OpenJPA version number information into the built jars,
presumably in a manifest entry. Does anyone have any knowledge 
about how

to coerce this type of info into jars in a mvn environment?

-Patrick









Re: Build data in built artifacts

2006-08-22 Thread Marc Prud'hommeaux


I've gone ahead and committed something that does Bryan's suggestion:  
generates a /META-INF/revision.properties file and outputs the  
current Subversion revision number to it.


The org.apache.openjpa.conf.OpenJPAVersion class will load that file  
and store it in the static REVISION_NUMBER field, as well as output  
it when the main() method of that class is run.


It's not perfect, but it's better than not having the information at  
all. In the future, we might want to think about writing a Maven  
plugin that does this a little more smoothly.



On Aug 22, 2006, at 2:11 PM, Bryan Noll wrote:

I dorked with it some more, and got it to the point where it wrote  
out a properties file with the subversion revision info in it (a la  
David's example)... but then ran into a wall in terms of getting  
the scope of that property to hang around long enough to stuff it  
into.  I hopped on the #maven irc at codehaus... and asked  
around... and it seems like it is simply not possible as of now.
The only option I got was to manually create a MANIFEST.MF file  
that is under subversion control, then filter it so the correct  
value gets put in that way, but it seems cumbersome to me to have  
to manually maintain all those files.


The next best thing would be to simply stuff a an openjpa- 
version.properties file in the jar that contains a line like:


svn-revision=433722

Seems like a hack because its not actually going in the manifest  
where it would be ideal... but I guess the information is still there.


I'm not sure I like either of those options...

Marc Prud'hommeaux wrote:

Bryan-

FYI, I had played with this a little while ago ... I got the  
subversion revision number using the maven-antrun-plugin and  
xmlproperty task to parse the .svn/entries file, but I couldn't  
figure out how to pass the value of the property from the ant  
plugin to the global Maven properties so that it could be later  
embedded using the maven-jar-plugin. If you have any ideas on how  
to do this (maybe even by writing out a file from ant and reading  
it back in with Maven), that'd be great.


This xmlproperty code that I wrote is actually still in the top- 
level pom.xml, it's just commented out.




On Aug 14, 2006, at 2:14 PM, Bryan Noll wrote:


Patrick...

Looks like the OpenJPA version number is already getting tossed  
in there as:


Implementation-Version: 0.9.0

We can stuff a subversion revision number in there by using  
'maven-jar-plugin'... I just have to play with it a bit in order  
to get a latest and greatest rev number.


Bryan Noll wrote:

Lemme take a crack at it...

Patrick Linskey wrote:

Hi,

I think it'd be nice if each of the modules could encode svn  
revision

number and OpenJPA version number information into the built jars,
presumably in a manifest entry. Does anyone have any knowledge  
about how

to coerce this type of info into jars in a mvn environment?

-Patrick











Re: Build data in built artifacts

2006-08-14 Thread David Blevins
Here is the technique I use on OpenEJB.  Note the version here is  
hardcoded cause at the time ${pom.currentVersion} didn't work.  They  
may have fixed that since.  Anyway, at runtime we just read this file  
out of the classpath.  Geronimo adopted the same technique.


  plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-antrun-plugin/artifactId
executions
  execution
phaseprocess-classes/phase
goals
  goalrun/goal
/goals
configuration
  tasks
tstamp/
replace file=target/classes/openejb- 
version.properties

 token=@VERSION-REPLACED-BY-MAVEN@
 value=3.0-SNAPSHOT/
replace file=target/classes/openejb- 
version.properties

 token=@DATE-REPLACED-BY-MAVEN@
 value=${DSTAMP}/
replace file=target/classes/openejb- 
version.properties

 token=@TIME-REPLACED-BY-MAVEN@
 value=${TSTAMP}/

!-- Add *.properties files --
copy todir=target/classes
  fileset dir=src/main/java
include name=**/*.properties/
  /fileset
/copy
  /tasks
/configuration
  /execution
/executions
  /plugin



On Aug 14, 2006, at 2:00 PM, Patrick Linskey wrote:


Hi,

I think it'd be nice if each of the modules could encode svn revision
number and OpenJPA version number information into the built jars,
presumably in a manifest entry. Does anyone have any knowledge  
about how

to coerce this type of info into jars in a mvn environment?

-Patrick

--
Patrick Linskey
BEA Systems, Inc.
__ 
_
Notice:  This email message, together with any attachments, may  
contain
information  of  BEA Systems,  Inc.,  its subsidiaries  and   
affiliated
entities,  that may be confidential,  proprietary,  copyrighted   
and/or
legally privileged, and is intended solely for the use of the  
individual
or entity named in this message. If you are not the intended  
recipient,
and have received this message in error, please immediately return  
this

by email and then delete it.