leosimons 2003/06/07 05:14:52
Modified: . maven-common.xml project-common.xml
Added: . maven-template.xml maven.log maven.xml
project.properties project.xml
Log:
More work on maven build system
Revision Changes Path
1.6 +18 -10 avalon-excalibur/maven-common.xml
Index: maven-common.xml
===================================================================
RCS file: /home/cvs/avalon-excalibur/maven-common.xml,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- maven-common.xml 5 Jun 2003 21:02:29 -0000 1.5
+++ maven-common.xml 7 Jun 2003 12:14:52 -0000 1.6
@@ -20,15 +20,15 @@
<goal name="excalibur:warn"
description="Alerts the user that the maven build is in development">
<ant:echo>
- ================================================================
- Avalon Excalibur Build System, the Maven Edition:
- ================================================================
- !!! WARNING !!!
-
- excalibur is built using ant; the maven build system
- is still in development. *DO NOT USE IT* unless you're helping
- out with setting that up or testing it.
- ================================================================
+================================================================
+ Avalon Excalibur Build System, the Maven Edition
+================================================================
+ !!! WARNING !!!
+
+ excalibur is built using ant; the maven build system
+ is still in development. *DO NOT USE IT* unless you're helping
+ out with setting that up or testing it.
+================================================================
</ant:echo>
</goal>
@@ -42,7 +42,7 @@
<!-- use forrest for doc generation if requested -->
<postGoal name="xdoc">
- <j:if test="${pom.getProperty('use-forrest')}">
+ <j:if test="${pom.getProperty('use-forrest') == 'true'}">
<attainGoal name="forrest:generate"/>
</j:if>
</postGoal>
@@ -203,4 +203,12 @@
basedir="${pom.build.unitTestSourceDirectory}"/>
</goal>
+ <!-- ==========================================================
+ Deployment customization
+ ========================================================== -->
+
+ <goal name="excalibur:deploy"
+ description="Deploys a release to www.apache.org/dist">
+ <echo>Not implemented!</echo>
+ </goal>
</project>
1.3 +7 -0 avalon-excalibur/project-common.xml
Index: project-common.xml
===================================================================
RCS file: /home/cvs/avalon-excalibur/project-common.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- project-common.xml 30 May 2003 22:58:25 -0000 1.2
+++ project-common.xml 7 Jun 2003 12:14:52 -0000 1.3
@@ -83,6 +83,10 @@
</dependency>
</dependencies>
+ <properties>
+ <use-forrest>true</use-forrest>
+ </properties>
+
<build>
<nagEmailAddress>[EMAIL PROTECTED]</nagEmailAddress>
<sourceDirectory>src/java</sourceDirectory>
@@ -93,6 +97,9 @@
<includes>
<include>**/*TestCase.java</include>
</includes>
+ <excludes>
+ <exclude>**/Abstract*</exclude>
+ </excludes>
</unitTest>
<!-- Resources that are packaged up inside the JAR file -->
1.1 avalon-excalibur/maven-template.xml
Index: maven-template.xml
===================================================================
<?xml version="1.0"?>
<project default="java:jar"
xmlns:j="jelly:core"
xmlns:ant="jelly:ant">
<!-- include the excalibur-wide custom project properties -->
<property file="${basedir}/project.properties"/>
<property file="${basedir}/../project.properties"/>
<property file="${basedir}/../../project.properties"/>
<property file="${basedir}/../../../project.properties"/>
<property file="${basedir}/../../../../project.properties"/>
<!-- include the excalibur-wide custom goal decorators from maven-common.xml -->
<j:import file="../maven-common.xml" inherit="true"/>
</project>
1.1 avalon-excalibur/maven.log
Index: maven.log
===================================================================
2003-06-07 14:13:27,171 INFO org.apache.maven.plugin.PluginManager - Initializing
Plugins!
2003-06-07 14:13:27,265 INFO org.apache.maven.plugin.PluginManager - Processing
Plugin: maven-castor-plugin-1.0
2003-06-07 14:13:27,390 INFO org.apache.maven.plugin.PluginManager - Processing
Plugin: maven-deploy-plugin-1.1
2003-06-07 14:13:27,437 INFO org.apache.maven.plugin.PluginManager - Processing
Plugin: maven-plexus-plugin-0.2
2003-06-07 14:13:27,453 INFO org.apache.maven.plugin.PluginManager - Processing
Plugin: maven-sea-plugin-1.0
2003-06-07 14:13:27,468 INFO org.apache.maven.plugin.PluginManager - Processing
Plugin: maven-vdoclet-plugin-1.0
2003-06-07 14:13:27,796 INFO org.apache.maven.plugin.PluginManager - Finished
initializing Plugins!
2003-06-07 14:13:32,000 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.ProjectTag doesn't support the nested "path" element.
2003-06-07 14:13:32,921 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "tstamp" element.
2003-06-07 14:13:32,984 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "echo" element.
2003-06-07 14:13:33,062 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "mkdir" element.
2003-06-07 14:13:33,062 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "mkdir" element.
2003-06-07 14:13:33,078 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "mkdir" element.
2003-06-07 14:13:33,078 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "mkdir" element.
2003-06-07 14:13:33,093 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "mkdir" element.
2003-06-07 14:13:33,171 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "copy" element.
2003-06-07 14:13:33,187 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "echo" element.
2003-06-07 14:13:33,359 ERROR org.apache.commons.jelly.tags.ant.AntTag - Class
com.werken.werkz.jelly.GoalTag doesn't support the nested "echo" element.
1.1 avalon-excalibur/maven.xml
Index: maven.xml
===================================================================
<?xml version="1.0"?>
<project default="excalibur:info"
xmlns:j="jelly:core"
xmlns:ant="jelly:ant">
<!-- ==========================================================
Documentation
========================================================== -->
<goal name="excalibur:info"
description="Build documentation kept right in the buildfile">
<ant:echo>
===================================================================
Avalon Excalibur Build System, the Maven Edition
===================================================================
!!! WARNING !!!
excalibur is built using ant; the maven build system is still in
development. *DO NOT USE IT* unless you're helping out with
setting it up or testing it.
Also note that not all the functionality described here is actually
in place. This is the "Write Docs First" paradigm, lacking a way to
write buildfile unit tests ;)
===================================================================
Building a single component
===========================
Change into the component's subdirectory, and use maven as normal.
Common usage includes:
maven java:jar # builds the jar
maven site # builds the website, including javadocs
maven dist # builds source and binary distributions
Building all components
=======================
Change into the main excalibur directory, and use maven as normal;
note not all goals are available. A maven reactor will be started
to build all components. Common usage includes:
maven java:jar # builds all jars
maven site # builds the website, including javadocs
maven dist # builds source and binary distributions
Special goals
=============
These are nonstandard goals available from the main excalibur
directory:
maven excalibur:info
# echo the documentation you're reading now
maven excalibur:seed
# create a new component; see below for more info
Creating a distribution
=======================
All project.xml files normally specify a <version/> ending in
'-dev'. When building files to upload to www.apache.org/dist,
you should override this. To do so, pass in an override.version
property:
maven -Doverride.version=1.3 dist
Now, manually inspect the generated distributions to make sure
they are correct. Drop them into a few environments (a cocoon
installation, a phoenix installation, etc) and make sure everything
still works as normal.
Next, you should sign releases using PGP. See
http://nagoya.apache.org/wiki/apachewiki.cgi?SigningReleases
for documentation on how to do so. This is not an optional step:
the build will assure further on that there are .asc files for
every release.
Once you are satisfied that the release is correct, you need to
upload the file to the official avalon distribution location.
This requires an SSH account on the daedalus.apache.org
installation, a working 'ssh' command on your path, and a running
ssh-agent (like the ssh-agent program that comes with OpenSSH or
the Pageant utility that comes with Putty) so you do not have to
enter your SSH key password.
To upload the files, run the 'excalibur:deploy' target inside
the component subdirectory, again making sure to override the
version:
maven -Doverride.version=1.3 excalibur:deploy
If your username on the daedalus.apache.org machine is not the same
as your local username, you can override it using the
'maven.username' variable:
maven -Doverride.version=1.3 -Dmaven.username=johndoe excalibur:deploy
In addition to uploading the distributions, this will also result
in a file named target/announcement-1.3.txt, containing an auto-
generated announcement for sending to mailing lists. If you want
to have the announcement sent to [EMAIL PROTECTED] and
[EMAIL PROTECTED] automatically, use
'-Dsend.announce=true':
maven -Doverride.version=1.3 -Dsend.announce=true excalibur:deploy
If this is not an official distribution yet, but a release
candidate, you will want to override the directory on the server
where the files are sent to (normally
/www/www.apache.org/dist/avalon/). To do so, specify the
'remote.dist.dir' property:
maven -Doverride.version=1.3
-Dremote.dist.dir=~/public_html/release-candidates excalibur:deploy
Summary:
maven dist -Doverride.version=1.3
### now check and test distributions ###
cd target/distributions
for i in *.zip; \
do gpg --output $i.asc --detach-sig --armor $i; \
done
cd ../..
maven -Doverride.version=1.3 \
-Dsend.announce=true excalibur:deploy
Adding a new component
======================
The easiest way to get a new component set up is the
'excalibur:seed' goal. This will generate a skeleton project for
you. You need to specify a few properties:
component.name the human-readable name for your component
component.id the artifact id used for your component's
build artifacts (jar files, zip files, etc)
component.dir the name of the directory to put the
component in
use.forrest 'false' if you want to use the regular
maven xdoc plugin rather than the forrest
plugin for handling your xdocs
Example:
maven -Dcomponent.name=My-Component \
-Dcomponent.id=my-component \
-Dcomponent.dir=mycomponent \
excalibur:seed
</ant:echo>
</goal>
<!-- ==========================================================
Repository management
========================================================== -->
<goal name="excalibur:seed"
description="Creates a new component. Try excalibur:info for more
information">
<!-- argument verification -->
<j:set var="cname" value="${component.name}"/>
<j:if test="${empty(cname)}">
<ant:fail message="Please specify component.name!"/>
</j:if>
<j:set var="cid" value="${component.id}"/>
<j:if test="${empty(cid)}">
<ant:fail message="Please specify component.id!"/>
</j:if>
<j:set var="cdir" value="${component.dir}"/>
<j:if test="${empty(cdir)}">
<ant:fail message="Please specify component.dir!"/>
</j:if>
<!-- argument defaults -->
<j:if test="${empty(use.forrest)}">
<j:set var="use.forrest" value="true"/>
</j:if>
<!-- variables -->
<ant:tstamp><ant:format property="current.year" pattern="yyyy"/></ant:tstamp>
<j:set var="inception.year" value="${current.year}"/>
<!-- debug info -->
<ant:echo>
Seeding new project with settings:
component.name = ${component.name}
component.id = ${component.id}
component.dir = ${component.dir}
inception.year = ${inception.year}
use.forrest = ${use.forrest}
</ant:echo>
<!-- create directory structure -->
<ant:mkdir dir="${component.dir}"/>
<ant:mkdir dir="${component.dir}/src"/>
<ant:mkdir dir="${component.dir}/src/java"/>
<ant:mkdir dir="${component.dir}/src/test"/>
<ant:mkdir dir="${component.dir}/src/xdocs"/>
<!-- create project.xml -->
<j:file name="${component.dir}/project.xml">
<j:whitespace xmlns="dummy">
<project>
<extend>../project-common.xml</extend>
<name>${component.name}</name>
<id>${component.name}</id>
<currentVersion>1.0-dev</currentVersion>
<inceptionYear>${inception.year}</inceptionYear>
<shortDescription>Excalibur's ${component.name} component</shortDescription>
<description>
This project doesn't have a description yet. Edit the file
${component.dir}/project.xml
to add one.
</description>
</project>
</j:whitespace>
</j:file>
<!-- create maven.xml -->
<ant:copy file="maven-template.xml" tofile="${component.dir}/maven.xml"/>
<!-- create project.properties -->
<ant:echo file="${component.dir}/project.properties">
# -------------------------------------------------------------------
# P R O J E C T P R O P E R T I E S
# -------------------------------------------------------------------
maven.repo.remote =
http://lsd.student.utwente.nl/repository,http://www.apache.org/dist/avalon,http://www.ibiblio.org/maven
</ant:echo>
<!-- create src/xdocs/tabs.xml -->
<j:if test="${use.forrest}">
<j:file name="${component.dir}/src/xdocs/tabs.xml">
<j:whitespace xmlns="dummy">
<tabs software="${component.name}"
title="${component.name}">
<tab label="Avalon Home" href="http://avalon.apache.org/"/>
<tab label="Framework" href="http://avalon.apache.org/framework/"/>
<tab label="Components" href="http://avalon.apache.org/components/"/>
<tab label="Phoenix" href="http://avalon.apache.org/phoenix/"/>
<tab label="SECA" href="http://avalon.apache.org/seca/"/>
</tabs>
</j:whitespace>
</j:file>
</j:if>
<!-- create src/xdocs/book.xml -->
<j:if test="${use.forrest}">
<j:file name="${component.dir}/src/xdocs/book.xml">
<j:whitespace xmlns="dummy">
<book software="${component.name}" title="${component.name}"
copyright="${inception.year} The Apache Software Foundation">
<menu label="Essentials">
<menu-item label="Overview" href="index.html"/>
<menu-item label="Download" href="http://avalon.apache.org/download.cgi"/>
<menu-item label="API Docs"
href="http://avalon.apache.org/excalibur/${component.dir}/apidocs/"/>
<menu-item label="CVS Access" href="cvs-usage.html"/>
</menu>
<menu label="Reports">
<menu-item href="maven-reports.html" label="Maven-generated reports"/>
<menu-item href="project-info.html" label="Maven-generated project info"/>
</menu>
</book>
</j:whitespace>
</j:file>
</j:if>
<!-- create .cvsignore -->
<ant:echo file="${component.dir}/.cvsignore">
target
*.log
*.ipr
*.iws
*.classpath
*.project
</ant:echo>
</goal>
</project>
1.1 avalon-excalibur/project.properties
Index: project.properties
===================================================================
# -------------------------------------------------------------------
# P R O J E C T P R O P E R T I E S
# -------------------------------------------------------------------
maven.repo.remote =
http://lsd.student.utwente.nl/repository,http://www.apache.org/dist/avalon,http://www.ibiblio.org/maven
1.1 avalon-excalibur/project.xml
Index: project.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<project>
<extend>./project-common.xml</extend>
<name>Avalon-Excalibur</name>
<id>excalibur-all</id>
<currentVersion>4.1-dev</currentVersion>
<inceptionYear>1997</inceptionYear>
<shortDescription>Avalon Excalibur Component Repository</shortDescription>
<description>
Excalibur is a collection of often-needed reusable components. It includes
tools for threading, pooling, datasources, command-line interface (CLI)
option parsing and more.
It also contains several containers and libraries that aid in building
containers.
</description>
<build>
<sourceDirectory></sourceDirectory>
<unitTestSourceDirectory></unitTestSourceDirectory>
</build>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]