FYI - Sam Ruby ---------------------- Forwarded by Sam Ruby/Raleigh/IBM on 03/28/2002 02:11 PM ---------------------------
"ajack" <[EMAIL PROTECTED]> on 03/28/2002 01:56:01 PM Please respond to "Jakarta General List" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> cc: Subject: Managing versions of Apache Jakarta software All, I've been lucky enough to have benefited from a lot of the excellent packages put out be this community, e.g. ANT/XERCES/LOG4J/XALAN/SOAP2.2/AXIS etc etc, and I thank you all for that. Recently however my utilization of a lot of Apache software has bitten me (commons-logging in AXIS in this case), and it all comes down to "JAR version hell" & conflicts between various versions delivered with various components. Upon investigation I see that some Jakarta projects distribute JARs with version information inside (notably log4j, XALAN) and some do not (notable AXIS and commons-logging, which is sad since they are newer and changing, so need it badly.) Please please please make it a standard that all Jakarta JARs are distributed with correct version information in them. This will not resolve the JAR hell of conflicts, but it will allow folk to be able to document what exact versions they use of libraries & track down environmental issues. Just to attempt to help, here are some things I have found: Javasoft did provide a JAR versioning, albeit [unfortunately] in a manifest file, not in the code [so not great for keeping in synch, IMHO]. http://java.sun.com/j2se/1.3/docs/guide/versioning/spec/VersioningSpecificat ion.html http://java.sun.com/products/jdk/1.2/docs/guide/versioning/ http://java.sun.com/j2se/1.4/docs/guide/extensions/versioning.html Here is a sample manifest from LOG4J: Manifest-version: 1.0 Name: org/apache/log4j/ Implementation-Title: log4j Implementation-Version: 1.1.3 Implementation-Vendor: "Apache Software Foundation" Now, it occurred to me that ANT would be the best tool to use for keeping manifest files in synchronization with code/releases, but I found [not that there may not exist] no easy way to do this with built in commands. That said I saw a couple of ways of managing the manifest within apache ant scripts, the simplest in log4j that does a search and replace in a template jar to set the version string: <target name="prejar" depends="build"> <mkdir dir="${jar.dest}"/> <filter token="version" value="${version}" /> <copy file="${manifest.src}" tofile="${jar.dest}/manifest.mf" filtering="true"/> </target> and then later used the manifest attribute on the jar task: <jar jarfile="${jar.dest}/log4j-core.jar" basedir="${javac.dest}" ... manifest="${jar.dest}/manifest.mf" /> Please look at Jakarta projects to see if versioning is missing, and please look at adding it. As I manage a deployment of a number of machines/domains of jakarta software the easier I can determine versions the better for resolving issues. I would believe this would help other users also. Thanks in advance of any consideration. regards, Adam -- Open Business Interchange: <http://www.openbiz.biz> The Revolutionary B2Bi Web Service ... ---------------------------------------------------------------------------- ---------------------------- Here is the XALAN manifest: Manifest-Version: 1.0 Main-Class: org.apache.xalan.xslt.Process Created-By: 1.2.2 (Sun Microsystems Inc.) Class-Path: jaxp.jar xerces.jar crimson.jar xml-apis.jar Name: org/apache/xml Implementation-Vendor: Apache Software Foundation Implementation-URL: http://xml.apache.org/xalan-j/dist/ Implementation-Version: 2.2.D14 Implementation-Title: org.apache.xml Comment: DTM implementation and utilities Name: org/apache/xpath Implementation-Vendor: Apache Software Foundation Implementation-URL: http://xml.apache.org/xalan-j/dist/ Implementation-Version: 2.2.D14 Implementation-Title: org.apache.xpath Comment: XPath engine Name: org/apache/xalan Specification-Title: Java API for XML Processing Specification-Vendor: Sun Microsystems Inc. Implementation-Vendor: Apache Software Foundation Implementation-URL: http://xml.apache.org/xalan-j/dist/ Specification-Version: 1.1 Implementation-Version: 2.2.D14 Implementation-Title: org.apache.xalan Comment: Main Xalan engine implementing TrAX/JAXP -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>