Awesome, am just starting a new webapp project which is going to use Maven
and was wondering how I was going to handle this!

-warner

----- Original Message -----
From: "Glenn A. McAllister" <[EMAIL PROTECTED]>
To: "Maven Dev List" <[EMAIL PROTECTED]>
Sent: Tuesday, April 30, 2002 8:37 PM
Subject: [PROPSAL] WAR build process (start of build-j2ee.xml)


>
> Based the previous emails about a war task and discussions held on the irc
> channel between myself, dIon, and Jason, here's a first cut at a
> standardized WAR build process for maven.
>
> This email is just the description; by the time I'm done this it will be
> time for bed, and I get little enough sleep as it is. :)  I'll probably do
> a first cut of an implementation tomorrow.
>
> I'm almost certain to have missed a detail or two.  I'm sure dIon will
> point out what I've missed.
>
> Goals
> =====
>
> This process is designed to build one war, with little or no modification
> to the POM.
>
> Directory Layout
> ================
>
> WAR                 Repository
> ---                 ----------
> Static content      src/webapps/${maven.war.name}
> WEB-INF/web.xml     src/conf/${maven.war.name}-web.xml
> WEB-INF/classes     ${build.dir}/**/*.class
> WEB-INF/lib         Dependent jars from POM (dependencies.set)
>
> Properties
> ==========
>
> Name                         Description
> ----                         -----------
> maven.war.name               The name of the WAR file.  This must be set -
>                              there is no default value.
>
> maven.war.content            Static content location, defaulting to
>                              src/webapps/${maven.war.name}.
>
> maven.war.classes            The WEB-INF/classes files, defaults to
>                              ${build.dir}/**/*.class
>
> maven.war.lib                The WEB-INF/lib fileset, defaults to the set
>                              of jars from the <dependency> elements.
>                              (dIon - how was this to work again?)
>
> maven.war.manifest           The manifest file, defaulting to the standard
>                              Maven manifest.
>
> maven.war.prepareBuildFile   These two properties are used to provide a
> maven.war.prepareBuildTarget hook for doing any additional preparation;
>                              see the "Process" section below.
>
> maven.war.updateBuildFile    These two properties are used to provide a
> maven.war.updateBuildTarget  hook for doing any additiona work on the
>                              generated WAR file; see the "Process" section
>                              below.
>
> Build File
> ==========
>
> The build filename will be build-j2ee.xml and the target to create the war
> is (surprise) war.  The delegator target name is maven:war.  The
> build-j2ee.xml file has all the standard init targets.
>
> Process
> =======
>
> 1. Delegate to compile and jar-resources in build-maven.xml to create the
>    *.class files and move any resource files into place.
>
> 2. If the properties ${maven.war.prepareBuildFile} and
>    ${maven.war.prepareBuildTarget} are set, execute
>
>      <ant antfile="${maven.war.prepareBuildFile}"
>           target="${maven.war.prepareBuildTarget}" />
>
>    This provides a hook to do any additional prep work (like moving
>    template files in the classes directory, etc.) before creating the war.
>    Thanks to Jason for the technique.
>
> 3. Create the WAR file : target/${maven.war.name}.war
>
> 4. If the properties ${maven.war.updateBuildFile} and
>    ${maven.war.updateBuildTarget} are set, execute
>
>      <ant antfile="${maven.war.updateBuildFile}"
>           target="${maven.war.updateBuildTarget}" />
>
>    This provides a hook to do any post processing required on the war
>    file.
>
> Afterwards
> ==========
>
> You know, I think it would have been faster to simply write the build file
> than this email. :)
>
> Note that while the goal of this process is to build a single war file,
> it can already build mutliple wars with differing web.xml and static
> content with the same set of WEB-INF/classes and WEB-INF/lib files due to
> the use of the ${maven.war.name} property.  Its a start.
>
> Glenn McAllister
> SOMA Networks, Inc.
>
>
>
>
>
>
>
>
>
>
>

Reply via email to