You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by Stephen McConnell <mc...@apache.org> on 2003/01/24 18:53:13 UTC

#2

I think some explaining is needed, possibly because I've badly phrased 
the #2 options in prior emails.  The purpose of this email is to 
describe what I think needs to be done at the James level to get James 
properly integrated into Gump so that it provides a good feedback loop.

Now keep in mind that I'm not gump expert - but I'm learning.

Gump lets you invoke an ant project (e.g. the build.xml in James) and in 
doing so, you can direct gump to declare some properties in advance.  If 
the James buildfile were to define the jars it was using as properties, 
then gump can override the James build with jar files generated from 
other projects like DNS, commons, avalon, etc.  Getting the most out of 
gump would require some small updates to the James build procedure:

  1. define a properties file that declares the path to
     the released jar files that you use day-to-day (e.g.
     stuff in <james-dir>/lib, etc.

  2. update the James build.xml to read in these properties
     and use these properties when defining things like the
     project.class.path.

     E.g.

     <project default="main" basedir=".">

       <!--
       load the defintion of released jars from
       the james lib directory
       -->

       <property file="${user.home}/project.properties"/>

       <!--
       Define the classpath based on the properties
       -->
       <path id="project.class.path">
         <pathelement location="${junit.jar}"/>
         <pathelement location="${xerces.jar}"/>
         <pathelement location="${xalan.jar}"/>
         <pathelement location="${xml-apis.jar}"/>
         <pathelement location="${dns.jar}"/>
         <pathelement location="${commons-net.jar}"/>
         <pathelement location="${commons-collections.jar}"/>
         <pathelement location="${jakarta-oro.jar}"/>
         <pathelement location="${avalon-framework.jar}"/>
         ...
       </path>

       ...

     </project>

  3. In the Gump descriptor for James, the definition of the
     jar file corresponding to the property value can be declare
     to be the result of a gump build (e.g. the current DNS, ORO,
     Commons xxx, Excalibur xxx, Cornerstone xxx, etc.). We can
     choose to link to either our local library of jars or to
     the gump generated library.  Linking to the gump version
     is what provides the feedback loop - someone (like me) does
     something to excalibur-pool which inadvertently breaks something
     else - I look at gump and find I have broken a dozen excalibur
     builds, James, Cornerstone, Cocoon, etc.  Based on this info
     I fix whatever it is I have done.

  4. The current James build includes dependencies to Phoenix, when
     in fact this can be separated out to a following stage.  Stage
     one should be building James.  Stage two should be building
     the deployment solution (and Phoenix is the released solution).
     I.e. at the gump level we should defining a gump target that
     builds James core.  A second gump target should be defined
     that builds the james-phoenix deployment solution - which
     would naturally be dependent on james core and phoneix.

  5. James users (like me) can then declare dependencies on James
     core (because I don't have a dependency on Phoenix).  When
     someone in James does something to James that breaks something
     that I'm working on - the feedback cycle to me is around 12 hours.
     I.e. everyone is provided with a soft notification solution.

Hope that clarifies what I'm talking about with respect to #2.

Cheers, Steve.

p.s. and yes, I'm happy to put time into getting that in place.

SJM

-- 

Stephen J. McConnell
mailto:mcconnell@apache.org
http://www.osm.net



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>