Hi Graig,
I'm curious that if we publish every build such as 2.0-b35, 2.0-b36..., is
it required to publish the SNAPSHOT build too to the maven repository? I
think it's enough to publish every (weekly)promoted builds only. If a user
use SNAPSHOT version for dependency, he will get a latest promoted build and
I think it's enough.
My intention of the SNAPSHOT version is just for developers who build
manually in the workspace. Currently, "9.1 build: not promoted (02/12/2007)"
is being used for this (in MANIFEST and logging). I don't know how to get
the lastest or next build number in Ant script. So I believe that "
2.0-SNAPSHOT (02/12/2007)" is good enough.
Marina, I see there are three places related to TopLink Essentials in the
java.net maven repository,
https://maven-repository.dev.java.net/nonav/repository/javax.persistence/
https://maven-repository.dev.java.net/nonav/repository/oracle.toplink.essentials/
https://maven-repository.dev.java.net/nonav/repository/oracle.toplink.essentials.agent/
java.persistence contains API and toplink-essentials.jar.
oracle.toplink.essentials and oracle.toplink.essentials.agent contain only
agent jar. This is very confusing.
As Graig said before, I believe the groupId for toplink-essentials.jar and
the agent jar should be "oracle.toplink.essentials". Even if we have no
option to remove already-published files, we'd better use the groupId for
the two jar files from now.
Marina, I think you can publish next promoted build(b36?) to the repository
after I finish this versioning fix. I can check-in anytime if there is no
more concern.
Thanks,
-Wonseok
On 2/14/07, Craig L Russell <Craig.Russell_at_sun.com> wrote:
>
> Hi Wonseok,
> Thanks for the update.
>
> On Feb 12, 2007, at 9:27 PM, Wonseok Kim wrote:
>
> Hi Craig,
>
> To compromise the issue, I fixed more things to my previous patch.
> * The full version will be like 2.0-b35 or 2.0-SNAPSHOT which does not
> include datestamp. This is used in POM.
>
>
> Good. I'd like to see the artifacts built only once and published under
> two different names. You would probably have an ant <copy> task defined to
> copy the artifacts to the file names with SNAPSHOT designation.
>
> * The "Implementation-Version" entry of MANIFEST.MF will have the full
> version and a build datestamp like "2.0-b35 (02/12/2007) or 2.0-SNAPSHOT(02/12/2007)" for more information.
>
>
> I don't think that the SNAPSHOT is an Implementation-Version. It's just a
> shorthand notation for "the latest", so I'd rather have the 2.0-b35 (02/12/2007)
> be the version that is published under two different names. "Next week", the
> SNAPSHOT will be replaced.
>
> What I'm not 100% sure of is if the artifact is named, e.g.
> toplink-essentials-2.0-SNAPSHOT.jar but the pom inside the jar says the
> version is 2.0-b35. I think it's ok but might need some testing to be
> sure.
>
> * The version string of the runtime which is printed in logs will also
> include the date timestamp like below.
> [TopLink Info]: 2007.02.13 01:50:01.198--ServerSession(25062038)--TopLink, version: Oracle TopLink Essentials -
> 2.0 (Build b35 (02/12/2007))
>
>
> ok.
>
>
> * One more thing is done to consolidate the agent class into
> toplink-essentials.jar. Which can be used as an java agent instead of
> toplink-essentials-agent.jar file. It still generates the agent jar file
> for existing users.
>
>
> ok. My main concern with the separate agent jar is usability. Currently,
> as a separate maven artifact, the user's project has to declare a dependency
> on two different essentials artifacts in their pom, and these need to be
> kept in sync manually. If we combine the two jars, then only one artifact
> dependency needs to be declared.
>
> I think we can remove it later(GFv3?) after some campaign.
>
>
> The agent stuff will take some getting used to, since it was not widely
> used before this technology was published. So I agree that we can delay
> removal of the agent jar until everyone "gets it". Meantime, we should
> change the documentation to refer to the essentials jar and keep the agent
> jar only for those folks who are already using it.
>
> Craig
>
>
> Team members, Please review the diff and the attached file.
> Thanks,
> -Wonseok
>
> Index: build.xml
> ===================================================================
> RCS file: /cvs/glassfish/entity-persistence/build.xml,v
> retrieving revision 1.17
> diff -c -w -r1.17 build.xml
> *** build.xml 4 Oct 2006 17:16:54 -0000 1.17
> --- build.xml 13 Feb 2007 04:59:46 -0000
> ***************
> *** 48,62 ****
>
> &commonBuild;
>
> <tstamp>
> <format property="build_date" pattern="MM/dd/yyyy"/>
> </tstamp>
> ! <condition property="build_string" value="${build_id}">
> <not>
> <equals arg1="${build_id}" arg2="" trim="true"/>
> </not>
> </condition>
> ! <property name="build_string" value="non promoted: ${build_date}"/>
>
> <!-- all -->
> <target name="all" depends="compile, assemble"
> --- 48,70 ----
>
> &commonBuild;
>
> + <!-- versioning -->
> + <!-- ${build_id} will be given by the build system. Manual build is
> SNAPSHOT -->
> <tstamp>
> <format property="build_date" pattern="MM/dd/yyyy"/>
> </tstamp>
> ! <condition property="build_number" value="${build_id}">
> <not>
> + <or>
> <equals arg1="${build_id}" arg2="" trim="true"/>
> + <equals arg1="${build_id}" arg2="local" trim="true"/>
> + </or>
> </not>
> </condition>
> ! <property name="build_number" value="SNAPSHOT"/>
> ! <property name="build_number_string" value="${build_number}
> (${build_date})"/>
> ! <property name="full_version" value="${release.version
> }-${build_number}"/>
> ! <property name="full_version_string" value="${full_version}
> (${build_date})"/>
>
> <!-- all -->
> <target name="all" depends="compile, assemble"
> ***************
> *** 83,89 ****
> description="Compile TopLink Essentials sources">
> <copy file="${src.dir}/oracle/toplink/essentials/Version.java"
> tofile="${component.classes.dir
> }/oracle/toplink/essentials/Version.java"/>
> ! <replace file="${ component.classes.dir}/oracle/toplink/essentials/Version.java"
> token="ESSENTIALS_BUILD_NUMBER" value="${build_string}"/>
> <javac srcdir="${component.classes.dir}"
> destdir="${ component.classes.dir}"
> includes="oracle/toplink/essentials/Version.java"
> --- 91,100 ----
> description="Compile TopLink Essentials sources">
> <copy file="${ src.dir}/oracle/toplink/essentials/Version.java"
> tofile="${component.classes.dir
> }/oracle/toplink/essentials/Version.java"/>
> ! <replace file="${component.classes.dir}/oracle/toplink/essentials/Version.java">
> ! <replacefilter token="@VERSION@" value="${release.version
> }"/>
> ! <replacefilter token="@BUILD_NUMBER@"
> value="${build_number_string}"/>
> ! </replace>
> <javac srcdir="${component.classes.dir}"
> destdir="${component.classes.dir}"
> includes="oracle/toplink/essentials/Version.java"
> ***************
> *** 140,146 ****
> <attribute name="Specification-Version" value="1.0"/>
> <attribute name="Implementation-Title" value="TopLink
> Essentials"/>
> <attribute name="Implementation-Vendor" value="Sun
> Microsystems, Inc., Oracle Corp."/>
> ! <attribute name="Implementation-Version" value=" 9.1build: ${build_string}"/>
> </manifest>
> <fileset dir="${component.classes.dir}">
> <include name="javax/persistence/**/*.class"/>
> --- 151,158 ----
> <attribute name="Specification-Version" value="1.0"/>
> <attribute name="Implementation-Title" value="TopLink
> Essentials"/>
> <attribute name="Implementation-Vendor" value="Sun
> Microsystems, Inc., Oracle Corp."/>
> ! <attribute name="Implementation-Version"
> value="${full_version_string}"/>
> ! <attribute name="Premain-Class" value="
> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializerAgent" />
> </manifest>
> <fileset dir="${ component.classes.dir}">
> <include name="javax/persistence/**/*.class"/>
> ***************
> *** 149,155 ****
> <include name="orm*.xsd"/>
> <include name="persistence*.xsd"/>
> <include name="persistence/antlr/**/*.class"/>
> - <exclude
> name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.class"/>
>
> </fileset>
> <fileset dir="${component.classes.dir}">
> <include name="${platform.mapping.file}"/>
> --- 161,166 ----
> ***************
> *** 159,164 ****
> --- 170,177 ----
> </fileset>
> </jar>
>
> + <!-- The agent jar is deprecated, but is generated for old
> version users.
> + ${entity-persistence.jar } now has the agent facility. -->
> <jar jarfile="${entity-persistence-agent.jar}">
> <manifest>
> <attribute name="Class-Path" value="
> toplink-essentials.jar" />
> ***************
> *** 168,174 ****
> <attribute name="Specification-Version" value="1.0"/>
> <attribute name="Implementation-Title" value="TopLink
> Essentials "/>
> <attribute name="Implementation-Vendor" value="Sun
> Microsystems, Inc., Oracle Corp."/>
> ! <attribute name="Implementation-Version" value=" 9.1build: ${build_string}"/>
> </manifest>
> <fileset dir="${component.classes.dir}">
> <include
> name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.class"/>
>
> --- 181,187 ----
> <attribute name="Specification-Version" value="1.0"/>
> <attribute name="Implementation-Title" value="TopLink
> Essentials "/>
> <attribute name="Implementation-Vendor" value="Sun
> Microsystems, Inc., Oracle Corp."/>
> ! <attribute name="Implementation-Version"
> value="${full_version_string}"/>
> </manifest>
> <fileset dir="${component.classes.dir}">
> <include
> name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.class"/>
>
> ***************
> *** 235,241 ****
> <copy todir="${release.dir}/manifest">
> <fileset dir="." includes="*.mf" />
> <filterset>
> ! <filter token="VERSION" value="${release.version}"/>
> </filterset>
> </copy>
> </target>
> --- 248,254 ----
> <copy todir="${ release.dir}/manifest">
> <fileset dir="." includes="*.mf" />
> <filterset>
> ! <filter token="VERSION" value="${full_version_string}"/>
>
> </filterset>
> </copy>
> </target>
> ***************
> *** 268,274 ****
> <include name="oracle/toplink/essentials/**/*.class"/>
> <include name="oracle/toplink/libraries/**/*.class"/>
> <include name="persistence/antlr/**/*.class"/>
> - <exclude
> name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.class"/>
>
> </fileset>
> <fileset dir="${release.dir}">
> <include name="javax/persistence/**/*.class"/>
> --- 281,286 ----
> ***************
> *** 299,305 ****
> <include name="oracle/toplink/essentials/**/*.java"/>
> <include name="oracle/toplink/libraries/**/*.java"/>
> <include name="persistence/antlr/**/*.java"/>
> - <exclude
> name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.java"/>
> </fileset>
> <fileset dir="${basedir}/../persistence-api/src/java">
> <include name="javax/persistence/**/*.java"/>
> --- 311,316 ----
> ***************
> *** 320,326 ****
> <target name="push-to-maven-prepare" depends="-push-to-maven-init,
> jar"
> description="creates an image for the 'push-to-maven' goal">
> <delete dir="build/maven-repo" /><!-- clean it -->
> ! <maven-repository-importer destdir="build/maven-repo"
> version="${ release.version}">
> <artifact jar="${release.dir}/toplink-essentials.jar" pom="
> toplink-essentials.pom" srczip="${release.dir}/toplink-essentials.src.zip"
> />
> <artifact jar="${ release.dir}/toplink-essentials-agent.jar"
> pom="toplink-essentials-agent.pom" srczip="${release.dir}/toplink-
> essentials-agent.src.zip" />
> </maven-repository-importer>
> --- 331,337 ----
> <target name="push-to-maven-prepare" depends="-push-to-maven-init,
> jar"
> description="creates an image for the 'push-to-maven' goal">
> <delete dir="build/maven-repo" /><!-- clean it -->
> ! <maven-repository-importer destdir="build/maven-repo"
> version="${full_version}">
> <artifact jar="${release.dir}/toplink-essentials.jar" pom="
> toplink-essentials.pom " srczip="${release.dir}/toplink-essentials.src.zip"
> />
> <artifact jar="${release.dir}/toplink-essentials-agent.jar"
> pom="toplink-essentials-agent.pom" srczip="${ release.dir}/toplink-
> essentials-agent.src.zip" />
> </maven-repository-importer>
> Index: build.properties
> ===================================================================
> RCS file: /cvs/glassfish/entity-persistence/build.properties,v
> retrieving revision 1.2
> diff -c -w -r1.2 build.properties
> *** build.properties 13 May 2006 01:34:16 -0000 1.2
> --- build.properties 13 Feb 2007 04:59:46 -0000
> ***************
> *** 26,32 ****
>
> ### Additonal Component Properties for standalone release ###
> release.dir=build/release
> ! release.version=1.0
> release.toplink-essentials.jar=${release.dir}/toplink-essentials.jar
>
> release.toplink-essentials-agent.jar=${release.dir}/toplink-essentials-agent.jar
>
> --- 26,32 ----
>
> ### Additonal Component Properties for standalone release ###
> release.dir=build/release
> ! release.version=2.0
> release.toplink-essentials.jar=${release.dir}/toplink-essentials.jar
>
> release.toplink-essentials-agent.jar=${release.dir}/toplink-essentials-agent.jar
>
> Index: toplink-essentials.mf
> ===================================================================
> RCS file: /cvs/glassfish/entity-persistence/toplink- essentials.mf,v
> retrieving revision 1.1
> diff -c -w -r1.1 toplink-essentials.mf
> *** toplink-essentials.mf 13 May 2006 01:34:15 -0000 1.1
> --- toplink-essentials.mf 13 Feb 2007 04:59:46 -0000
> ***************
> *** 1,8 ****
> Extension-Name: javax.persistence
> ! Specification-Title: Java Platform, Persistence Specification
> ! Specification-Version: @VERSION@
> Specification-Vendor: Sun Microsystems, Inc., Oracle Corp.
> ! Implementation-Version: @VERSION@
> Implementation-Vendor: Sun Microsystems, Inc., Oracle Corp.
> Implementation-Vendor-Id: oracle.toplink.essentials
> ! Implementation-Title: Sun Java System Application Server
> --- 1,9 ----
> Extension-Name: javax.persistence
> ! Specification-Title: Java Persistence API
> ! Specification-Version: 1.0
> Specification-Vendor: Sun Microsystems, Inc., Oracle Corp.
> ! Implementation-Title: TopLink Essentials
> Implementation-Vendor: Sun Microsystems, Inc., Oracle Corp.
> Implementation-Vendor-Id: oracle.toplink.essentials
> ! Implementation-Version: @VERSION@
> ! Premain-Class:
> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializerAgent
> Index: toplink-essentials-agent.mf
> ===================================================================
> RCS file: /cvs/glassfish/entity-persistence/toplink-essentials-agent.mf,v
> retrieving revision 1.2
> diff -c -w - r1.2 toplink-essentials-agent.mf
> *** toplink-essentials-agent.mf 16 May 2006 01:01:27 -0000 1.2
> --- toplink-essentials-agent.mf 13 Feb 2007 04:59:46 -0000
> ***************
> *** 1,9 ****
> Extension-Name: oracle.toplink.essentials.agent
> ! Specification-Title: Java Platform, Persistence Specification
> ! Specification-Version: @VERSION@
> Specification-Vendor: Sun Microsystems, Inc., Oracle Corp.
> ! Implementation-Version: @VERSION@
> Implementation-Vendor: Sun Microsystems, Inc., Oracle Corp.
> Implementation-Vendor-Id: oracle.toplink
> ! Implementation-Title: Sun Java System Application Server
> Premain-Class:
> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializerAgent
> --- 1,9 ----
> Extension-Name: oracle.toplink.essentials.agent
> ! Specification-Title: Java Persistence API
> ! Specification-Version: 1.0
> Specification-Vendor: Sun Microsystems, Inc., Oracle Corp.
> ! Implementation-Title: TopLink Essentials
> Implementation-Vendor: Sun Microsystems, Inc., Oracle Corp.
> Implementation-Vendor-Id: oracle.toplink
> ! Implementation-Version: @VERSION@
> Premain-Class:
> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializerAgent
> Index: src/java/oracle/toplink/essentials/Version.java
> ===================================================================
> RCS file:
> /cvs/glassfish/entity-persistence/src/java/oracle/toplink/essentials/Version.java,v
>
> retrieving revision 1.47
> diff -c -w -r1.47 Version.java
> *** src/java/oracle/toplink/essentials/Version.java 4 Jan 2007 14:30:28
> -0000 1.47
> --- src/java/oracle/toplink/essentials/Version.java 13 Feb 2007
> 04:59:46 -0000
> ***************
> *** 36,43 ****
> // The current version of TopLink.
> // This will be used by all product components and included in
> exceptions.
> private static String product = "Oracle TopLink Essentials";
> ! private static final String version = "9.1";
> ! private static final String buildNumber = "ESSENTIALS_BUILD_NUMBER";
>
> /** Keep track of JDK version in order to make some decisions about
> datastructures. **/
> public static final int JDK_VERSION_NOT_SET = 0;
> --- 36,43 ----
> // The current version of TopLink.
> // This will be used by all product components and included in
> exceptions.
> private static String product = "Oracle TopLink Essentials";
> ! private static final String version = "@VERSION@";
> ! private static final String buildNumber = "@BUILD_NUMBER@";
>
> /** Keep track of JDK version in order to make some decisions about
> datastructures. **/
> public static final int JDK_VERSION_NOT_SET = 0;
>
>
> On 2/13/07, Craig L Russell <Craig.Russell_at_sun.com > wrote:
> >
> > As I understand the way maven works, having both SNAPSHOT and a date
> > stamp is wrong.
> > In fact, having both a build number and SNAPSHOT is wrong.
> >
> > What SNAPSHOT does on the maven client side is to ask maven to download
> > a new version of the software each time it's invoked without the -o
> > (offline) option. So it makes sense to create a 2.0-SNAPSHOT.jar to
> > represent all of the working versions of the 2.0-in-process jars that
> > you build. But if you publish a 2.0-b56-SNAPSHOT, and the next version
> > is 2.0-b57-SNAPSHOT, the user will have to declare a dependency on the
> > specific version. That is, either 2.0-b56-SNAPSHOT or 2.0-b57-SNAPSHOT.
> > And there is no point in declaring a dependency on a specific build number
> > as a SNAPSHOT since it will never be refreshed.
> >
> > To effectively use SNAPSHOT, it should simply be 2.0-SNAPSHOT. When you
> > refresh the repository, you typically publish both 2.0-b57 and
> > 2.0-SNAPSHOT, which are the identical file. When you then publish
> > 2.0-b58 and 2.0-SNAPSHOT, folks who depend on the 2.0-SNAPSHOT will get
> > the new file, folks who want specifically 2.0-b57 will never see the new
> > download, and if folks want the new stuff but nothing beyond it, they ask
> > for 2.0-b58.
> >
> > Craig
> >
> > On Feb 12, 2007, at 5:37 PM, Wonseok Kim wrote:
> >
> > That is what is being discussed. Until then, it's a manual process.
> > > Also,
> > > SNAPSHOT is not an automated push unless every nightly build pushes
> > > the update out.
> > >
> > > So may be we should use 2 versions of the full-version - one with the
> > > date, and
> > > one without. What do you think?
> >
> >
> > I hope that it become part of automated process soon.
> > We have an option to use date both for the two versions like
> > 2.0-b35-20070212 and 2.0-SNAPSHOT-20070212. I'm not sure this is
> > required. If anyone have better idea, please tell ASAP.
> >
> > Thanks,
> > -Wonseok
> >
> >
> > Craig Russell
> > Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
> > 408 276-5638 mailto:Craig.Russell_at_sun.com <Craig.Russell_at_sun.com>
> > P.S. A good JDO? O, Gasp!
> >
> >
> >
> <tle_version_fix.jar>
>
>
> Craig Russell
>
> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
>
> 408 276-5638 mailto:Craig.Russell_at_sun.com <Craig.Russell_at_sun.com>
>
> P.S. A good JDO? O, Gasp!
>
>
>