<?xml version="1.0"?>

<!--
   Copyright 2003-2004 The Apache Software Foundation

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
  -->
  
<?xml-stylesheet type="text/xsl" href="xdoc.xsl"?>
<!-- $Revision$ $Date$ -->
<document>
 <properties>
  <title>Release Managers Guide</title>
  <author email="mdiggory@apache.org">Mark Diggory</author>
 </properties>

 <body>
  <section name="Aims">
   <p>
    As different individuals may be filling the role of Release Manager
    for the Math project at different times. This documentation is provided 
    as a means of organizing release procedures such that releases
    can maintain consistency.
    </p>
   </section>
   <section name='Guidelines'>
   <p>
   Math Project Releases are primarily facilitated using Maven's 'dist' and 'jar' 
   goals to build releases in tar.gz, zip and jar archive formats. Additional
   goals and processes have been added using the included <code>maven.xml</code>
   file in the root directory.
   </p>
   </section>
   <section name='Distribution Contents'>
   <subsection name="Binary Releases (tar.gz and zip)">
        <source>
        
   Length     Date   Time    Name
  --------    ----   ----    ----
         0  01-29-04 09:31   commons-math-0.1-dev/
     11358  01-29-04 09:31   commons-math-0.1-dev/LICENSE.txt
         0  01-29-04 09:31   commons-math-0.1-dev/docs/
         0  01-29-04 09:31   commons-math-0.1-dev/docs/clover/
      ...
      6103  01-29-04 09:31   commons-math-0.1-dev/docs/apidocs/
      ...
    124140  01-29-04 09:31   commons-math-0.1-dev/commons-math-0.1-dev.jar
    110531  01-29-04 09:31   commons-math-0.1-dev/commons-beanutils-1.5.jar
    165119  01-29-04 09:31   commons-math-0.1-dev/commons-collections-2.1.jar
     72176  01-29-04 09:31   commons-math-0.1-dev/commons-discovery-20030211.213356.jar
     31605  01-29-04 09:31   commons-math-0.1-dev/commons-logging-1.0.3.jar
    169763  01-29-04 09:31   commons-math-0.1-dev/commons-lang-2.0.jar
    
        </source>
   </subsection>
   <subsection name="Source Releases">
    <p>
     *src release* (tar.gz and zip)
    </p>
    <source>
    
 Archive:  commons-math-0.1-dev-src.zip
   Length     Date   Time    Name
  --------    ----   ----    ----
         0  01-29-04 09:31   commons-math-0.1-dev/
         0  01-29-04 09:31   commons-math-0.1-dev/src/
       282  01-29-04 09:31   commons-math-0.1-dev/src/conf/MANIFEST.MF
         0  01-29-04 09:31   commons-math-0.1-dev/src/test/
         ...
         0  01-29-04 09:31   commons-math-0.1-dev/src/java/
         ...
         0  01-29-04 09:31   commons-math-0.1-dev/src/conf/
       370  01-29-04 09:31   commons-math-0.1-dev/maven.xml
      4692  01-29-04 09:31   commons-math-0.1-dev/project.xml
       801  01-29-04 09:31   commons-math-0.1-dev/project.properties
     11358  01-29-04 09:31   commons-math-0.1-dev/LICENSE.txt
      6635  01-29-04 09:31   commons-math-0.1-dev/build.xml
    
    </source>
    <p>This project.xml is the one with the dependencies resolved to a version. 
    This build.xml is generated off the above project.xml, so its dependencies 
    are resolved as well.
    </p>
   </subsection>

   <subsection name="Jar Releases">
    <p>
     *jar release* (jar)
    </p>
    <source>
    

 Archive:  commons-math-0.1-dev.jar
   Length     Date   Time    Name
  --------    ----   ----    ----
         0  01-29-04 09:30   META-INF/
       423  01-29-04 09:30   META-INF/MANIFEST.MF
     11358  01-29-04 09:23   META-INF/LICENSE.txt
         0  01-17-04 15:05   org/
         0  01-17-04 15:05   org/apache/
         0  01-17-04 15:05   org/apache/commons/
         0  01-17-04 15:05   org/apache/commons/math/
         0  01-17-04 15:05   org/apache/commons/math/analysis/
         0  01-29-04 09:24   org/apache/commons/math/complex/
         0  01-28-04 16:32   org/apache/commons/math/distribution/
         0  01-28-04 16:32   org/apache/commons/math/linear/
         0  01-17-04 15:05   org/apache/commons/math/random/
         0  01-28-04 16:32   org/apache/commons/math/stat/
         0  01-17-04 15:05   org/apache/commons/math/stat/univariate/
         0  01-17-04 15:05   org/apache/commons/math/stat/univariate/rank/
         0  01-17-04 15:05   org/apache/commons/math/stat/univariate/moment/
         0  01-17-04 15:05   org/apache/commons/math/stat/univariate/summary/
         0  01-17-04 15:05   org/apache/commons/math/special/
         0  01-17-04 15:05   org/apache/commons/math/util/
      1609  01-29-04 09:24   org/apache/commons/math/analysis/BisectionSolver.class
      3033  01-29-04 09:24   org/apache/commons/math/analysis/UnivariateRealSolverImpl.class
       799  01-29-04 09:24   org/apache/commons/math/analysis/UnivariateRealSolver.class
       247  01-29-04 09:24   org/apache/commons/math/analysis/UnivariateRealFunction.class

        ... 
    
    </source>
   </subsection>
   </section>
   <section name="Deploying">
    <p>
     Info on deploying releases using Maven.
    </p>
   </section>
 </body>
</document>
