taylor      2004/05/24 11:12:03

  Modified:    plugin   plugin.jelly
  Log:
  *** keyword substitution change ***
  
  Revision  Changes    Path
  1.9       +391 -391  jakarta-jetspeed/plugin/plugin.jelly
  
  Index: plugin.jelly
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/plugin/plugin.jelly,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- plugin.jelly      22 Apr 2004 04:03:04 -0000      1.8
  +++ plugin.jelly      24 May 2004 18:12:03 -0000      1.9
  @@ -1,391 +1,391 @@
  -<?xml version="1.0"?>

  -<!--

  -Copyright 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.

  --->

  -<!--

  -  =============================================================================

  -    Jetspeed plugin for Maven.

  -  =============================================================================

  --->

  -<project 

  -  xmlns:j="jelly:core"

  -  xmlns:i="jelly:interaction"

  -  xmlns:ant="jelly:ant" 

  -  xmlns:define="jelly:define"

  -  xmlns:u="jelly:util"

  -  xmlns:jetspeed="jetspeed">

  -    <!--

  -     ========================================================================

  -       Create the custom WAR from binary distribution

  -     ========================================================================

  -  -->

  -    <goal name="jetspeed:war" description="Create custom .war file based on 
jetspeed binary distribution">

  -        <j:set var="maven.war.src" value="${war.stage.dir}/webapp"/>

  -        <j:if test="${maven.jetspeed.debug == 'true'}">

  -            <echo>[DEBUG] maven.src.dir = ${maven.src.dir}</echo>

  -            <echo>[DEBUG] maven.war.src = ${maven.war.src}</echo>

  -            <echo>[DEBUG] maven.build.dir = ${maven.build.dir}</echo>

  -            <echo>[DEBUG] maven.war.build.dir = ${maven.war.build.dir}</echo>

  -            <echo>[DEBUG] maven.dependency.classpath = 
${maven.dependency.classpath}</echo>

  -        </j:if>

  -        <!-- recreate target area -->

  -        <!--attainGoal name="war:init"/-->

  -        <mkdir dir="${maven.war.src}"/>

  -        <!-- recreate stage area -->

  -        <delete dir="${war.stage.dir}"/>

  -        <mkdir dir="${war.stage.dir}"/>

  -        <!-- copy distribution war to stage directory -->

  -        <j:forEach var="dep" items="${pom.dependencies}">

  -            <j:if test="${dep.getType() == 'distribution'}">

  -                <j:set var="dist.name" value="${dep.getArtifactId()}"/>

  -                <j:set var="internal.war.path" 
value="${dep.getProperty('dist.native.name')}"/>

  -                <j:set var="internal.war.path" 
value="${dep.getProperty('dist.native.name')}"/>

  -                <u:tokenize var="parts" delim=":">${dep.getId()}</u:tokenize>

  -                <j:set var="depid" value="${parts[0]}"/>

  -                <j:set var="dist.dependency.zip" 
value="${maven.repo.local}/${depid}/distributions/${dep.getArtifact()}"/>

  -                <j:if test="${maven.jetspeed.debug == 'true'}">

  -                    <echo>[DEBUG] dist.dependency.zip = 
${dist.dependency.zip}</echo>

  -                    <echo>[DEBUG] dist.name = ${dist.name}</echo>

  -                    <echo>[DEBUG] internal.war.path= ${internal.war.path}</echo>

  -                    <echo>[DEBUG] depid= ${depid}</echo>

  -                </j:if>

  -                <!-- extract .war file from distribution -->

  -                <unzip src="${dist.dependency.zip}" dest="${maven.war.src}">

  -                    <!-- This extracts the .war and expands it -->

  -                    <fileset dir=".">

  -                        <include name="**/*.war"/>

  -                        <exclude name="**/${pom.artifactId}.war"/>

  -                    </fileset>

  -                </unzip>

  -                <!-- delete work files from distribution -->

  -                <delete dir="${maven.war.src}/${internal.war.path}"/>

  -            </j:if>

  -        </j:forEach>

  -        <!-- copy application webapp source to stage webapp -->

  -        <copy todir="${maven.war.src}" overwrite="true" filtering="true">

  -            <fileset dir="${war.src}">

  -                <exclude name="**/*CVS*"/>

  -                <exclude name="**/*Entries*"/>

  -                <exclude name="**/*Repository*"/>

  -                <exclude name="**/*Tag*"/>

  -                <exclude name="**/*.log"/>

  -                <exclude name="**/*.log.1"/>

  -            </fileset>

  -        </copy>

  -        <!-- create project .jar file -->

  -        <attainGoal name="java:jar"/>

  -        <!-- copy jar to web app directory -->

  -        <copy file="${maven.build.dir}/${maven.final.name}.jar" 
todir="${maven.war.src}/WEB-INF/lib"/>

  -        <!-- remove class files -->

  -        <!--delete>

  -            <fileset dir="${maven.build.dir}/classes" includes="**/*.class"/>

  -        </delete-->

  -        <!-- set version tag -->

  -        <attainGoal name="jetspeed:war-version-tag"/>

  -        <!--  merge any property files and copy environment specific local 
registries -->

  -        <attainGoal name="jetspeed:war-config"/>

  -        <!-- create project .war file -->

  -        <attainGoal name="war:war"/>

  -    </goal>

  -    <!--

  -     ========================================================================

  -       Embed release version tag into bottom navigation

  -     ========================================================================

  -  -->

  -    <goal name="jetspeed:war-version-tag" description="Updates release version tag 
shown in the bottom navigation">

  -        <replace 
file="${maven.war.src}/WEB-INF/templates/vm/navigations/html/bottom.vm" 
token="(release)" value="${pom.currentVersion}"/>

  -    </goal>

  -    <!--

  -     ========================================================================

  -       Override jetspeed property files and add local registries

  -     ========================================================================

  -  -->

  -    <goal name="jetspeed:war-config" description="Override jetspeed property files 
and add local registries">

  -        <!-- define custom task for oeverriding properties -->

  -        <taskdef name="props_override" 
classname="org.apache.jetspeed.util.ant.OverwritePropertiesTask">

  -            <classpath>

  -                <path refid="maven.dependency.classpath"/>

  -            </classpath>

  -        </taskdef>

  -        <!-- set proper environment property files -->

  -        <echo>Targeting ${maven.env.name} environment ...</echo>

  -        <j:set var="props.dir" value="${maven.war.src}/WEB-INF/conf"/>

  -        <u:tokenize var="merge.prop.files" 
delim=",">${maven.merge.properties}</u:tokenize>

  -        <j:forEach items="${merge.prop.files}" var="prop.file">

  -            <j:if test="${maven.jetspeed.debug == 'true'}">

  -                <echo>[DEBUG] Merging ${prop.file}</echo>

  -            </j:if>

  -            <j:if test="${maven.env.name != null}">

  -                <j:if test="${maven.jetspeed.debug == 'true'}">

  -                    <echo>[DEBUG] Merging ${prop.file} for ${maven.env.name}</echo>

  -                </j:if>

  -                <props_override 
mergeBaseProperties="${props.dir}/${prop.file}.properties" 
mergeProperties="${props.dir}/${prop.file}-${maven.env.name}.properties.merge" 
includesDir="${props.dir}" failonerror="false"/>

  -            </j:if>

  -            <props_override 
mergeBaseProperties="${props.dir}/${prop.file}.properties" 
mergeProperties="${props.dir}/${prop.file}.properties.merge" 
includesDir="${props.dir}" failonerror="false"/>

  -        </j:forEach>

  -        <!-- environment specific local registries -->

  -        <j:if test="${maven.env.name == null}">

  -            <u:tokenize var="local.xreg.files" 
delim=",">${maven.copy.env.xreg}</u:tokenize>

  -            <j:forEach items="${local.xreg.files}" var="xreg.file">

  -                <j:if test="${maven.jetspeed.debug == 'true'}">

  -                    <echo>[DEBUG] Copying local-${xreg.file} for 
${maven.env.name}</echo>

  -                </j:if>

  -                <copy 
file="${props.dir}/local-${xreg.file}-${maven.env.name}.xreg.copy" 
toFile="${props.dir}/local-${xreg.file}.xreg" failonerror="false"/>

  -            </j:forEach>

  -        </j:if>

  -        <delete>

  -            <fileset dir="${props.dir}" includes="**/*.properties.merge"/>

  -            <fileset dir="${props.dir}" includes="**/local-*.xreg.copy"/>

  -        </delete>

  -    </goal>

  -    <!-- ================================================================== -->

  -    <!--H O T D E P L O Y   W E B A P P                        -->

  -    <!-- ================================================================== -->

  -    <goal name="jetspeed:hotdeploy" prereqs="java:compile" description="Hot deploys 
webapp classes on a local server">

  -        <attainGoal name="jetspeed:hotdeploy-config"/>

  -        <j:if test="${maven.jetspeed.debug == 'true'}">

  -            <echo>[DEBUG] maven.src.dir = ${maven.src.dir}</echo>

  -            <echo>[DEBUG] maven.war.src = ${maven.war.src}</echo>

  -            <echo>[DEBUG] maven.build.dir = ${maven.build.dir}</echo>

  -            <echo>[DEBUG] maven.war.build.dir = ${maven.war.build.dir}</echo>

  -        </j:if>

  -        <copy 
todir="${maven.war.appserver.home}/webapps/${pom.artifactId}/WEB-INF/classes">

  -            <fileset dir="${maven.build.dir}/classes">

  -                <!-- Do not include test files in the runtime jar -->

  -                <exclude name="**/Test*.*"/>

  -                <exclude name="**/test*.*"/>

  -                <!-- Also exclude the test cactus.properties file -->

  -                <exclude name="cactus.properties"/>

  -            </fileset>

  -        </copy>

  -        <copy todir="${maven.war.appserver.home}/webapps/${pom.artifactId}">

  -            <fileset dir="./stage/webapp">

  -                <exclude name="**/*.properties.merge"/>

  -            </fileset>

  -        </copy>

  -    </goal>

  -

  -    <goal name="jetspeed:hotdeploy-config"  description="Config Hot deploys webapp 
classes on a local server">

  -    </goal>

  -

  -    <!--

  -     ========================================================================

  -       Create the Jetspeed WAR

  -     ========================================================================

  -  -->

  -    <goal name="jetspeed:overlay" description="Overlay a vanilla Jetspeed War file 
on your existing code.">

  -        <!-- this seems required to setup the plugin context -->

  -        <attainGoal name="war:init"/>

  -        <j:set var="maven.jetspeed.prewar.dir" 
value="${pom.getPluginContext('maven-war-plugin').getVariable('maven.war.build.dir')}"/>

  -        <available file="${maven.jetspeed.prewar.dir}/${pom.artifactId}.war" 
property="maven.jetspeed.prewar.exists"/>

  -        <j:choose>

  -            <j:when test="${maven.jetspeed.prewar.exists}">

  -                <!-- Expand the project war -->

  -                <unwar src="${maven.jetspeed.prewar.dir}/${pom.artifactId}.war" 
dest="${maven.jetspeed.build.dir}/${pom.artifactId}"/>

  -                <attainGoal name="jetspeed:webapp-update"/>

  -                <!-- delete the war because it no longer reflects the expanded 
webapp -->

  -                <delete file="${maven.jetspeed.prewar.dir}/${pom.artifactId}.war"/>

  -            </j:when>

  -            <j:otherwise>

  -                <available 
file="${maven.jetspeed.prewar.dir}/${pom.artifactId}/WEB-INF" type="dir" 
property="maven.jetspeed.prewebapp.exists"/>

  -                <j:choose>

  -                    <j:when test="${maven.jetspeed.prewebapp.exists}">

  -                        <copy todir="${maven.jetspeed.build.dir}/${pom.artifactId}">

  -                            <fileset 
dir="${maven.jetspeed.prewar.dir}/${pom.artifactId}"/>

  -                        </copy>

  -                        <attainGoal name="jetspeed:webapp-update"/>

  -                    </j:when>

  -                    <j:otherwise>

  -                        <echo>

  -              Either a war or a webapp must exist. Please call the War plugin

  -              first.

  -            </echo>

  -                    </j:otherwise>

  -                </j:choose>

  -            </j:otherwise>

  -        </j:choose>

  -    </goal>

  -    <goal name="jetspeed:webapp-update">

  -        <unwar src="${maven.jetspeed.vanilla.war}" 
dest="${maven.jetspeed.build.dir}/${pom.artifactId}" overwrite="true"/>

  -        <attainGoal name="jetspeed:merge-properties"/>

  -    </goal>

  -    <goal name="jetspeed:merge-properties" description="Merge properties into 
vanilla property files">

  -        <taskdef name="overwriteproperties" 
classname="org.apache.jetspeed.util.ant.OverwritePropertiesTask">

  -            <classpath>

  -                <path refid="maven.dependency.classpath"/>

  -            </classpath>

  -        </taskdef>

  -        <echo> merge_jrp required </echo>

  -        <overwriteproperties 
mergeBaseProperties="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/JetspeedResources.properties"
 mergeProperties="${maven.jetspeed.merge.dir}/MergeJetspeedResources.properties" 
includesDir="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/"/>

  -        <echo> merge_security required </echo>

  -        <overwriteproperties 
mergeBaseProperties="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/JetspeedSecurity.properties"
 mergeProperties="${maven.jetspeed.merge.dir}/MergeJetspeedSecurity.properties" 
includesDir="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/"/>

  -        <echo> merge_trp required </echo>

  -        <overwriteproperties 
mergeBaseProperties="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/TurbineResources.properties"
 mergeProperties="${maven.jetspeed.merge.dir}/MergeTurbineResources.properties" 
includesDir="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/"/>

  -        <echo> merge_torque required </echo>

  -        <overwriteproperties 
mergeBaseProperties="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/Torque.properties"
 mergeProperties="${maven.jetspeed.merge.dir}/MergeTorque.properties" 
includesDir="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/"/>

  -    </goal>

  -    

  -    <!-- ================================================================== -->

  -    <!-- D E P L O Y   W E B A P P                                          -->

  -    <!-- ================================================================== -->

  -    <goal name="jetspeed:deploy" prereqs="jetspeed:war" description="Simple deploy 
of entire webapp to app server">

  -        <j:if test="${maven.jetspeed.debug == 'true'}"> 

  -            <echo>[DEBUG] maven.src.dir = ${maven.src.dir}</echo>

  -            <echo>[DEBUG] maven.war.src = ${maven.war.src}</echo>

  -            <echo>[DEBUG] maven.build.dir = ${maven.build.dir}</echo>

  -            <echo>[DEBUG] pom.artificactId = ${pom.artifactId}</echo>

  -        </j:if>  

  -        <delete dir="${maven.war.appserver.home}/webapps/${pom.artifactId}"/> 

  -        <copy  file="${maven.build.dir}/${pom.artifactId}.war" 
todir="${maven.war.appserver.home}/webapps/">

  -        </copy>        

  -        <unwar src="${maven.war.appserver.home}/webapps/${pom.artifactId}.war" 
dest="${maven.war.appserver.home}/webapps/${pom.artifactId}"/>

  -    </goal>

  -    

  -    <define:taglib uri="jetspeed">

  -    <!--

  -     |

  -     | @template

  -     |

  -     -->

  -    <define:tag name="generate">

  -      <!-- Get the template -->

  -      <!-- create a temporary variable with no dots in the name to get around a 
jexl bug -->

  -      <j:set var="presettemplate" value="${template}"/>

  -      <j:if test="${empty(presettemplate)}">

  -        <i:ask question="${maven.jetspeed.genapp.prompt.template}" 
answer="template" default="${maven.jetspeed.genapp.default.template}"/>

  -      </j:if>

  -      

  -      <!-- If template is in the user's home directory, use it -->    

  -      <u:available file="${user.home}/.maven/template/${template}">

  -        <j:set var="maven.jetspeed.genapp.template.dir" 
value="${user.home}/.maven/template/${template}"/>

  -      </u:available>

  -      

  -      <j:set var="currenttemplatedir" 
value="${maven.jetspeed.genapp.template.dir}"/>

  -      <j:if test="${empty(currenttemplatedir)}">

  -        <!-- The template was not found in user.home, check in the plugin resources 
-->

  -        <u:available file="${plugin.resources}/${template}">

  -          <j:set var="maven.jetspeed.genapp.template.dir" 
value="${plugin.resources}/${template}"/>

  -        </u:available>

  -      </j:if>

  -      

  -      <j:set var="currenttemplatedir" 
value="${maven.jetspeed.genapp.template.dir}"/>

  -      <j:if test="${empty(currenttemplatedir)}">

  -        <fail>

  -          Unable to locate a template named ${template}

  -        </fail>

  -      </j:if>

  -      

  -      <!-- Ensure that the template has a template-resources directory and use it 
-->

  -      <u:available file="${maven.jetspeed.genapp.template.dir}/template-resources">

  -        <!-- Set resources dir to the template resources directory -->

  -        <j:set var="maven.jetspeed.genapp.resources" 
value="${maven.jetspeed.genapp.template.dir}/template-resources"/>

  -      </u:available>

  -  

  -      <!-- Check that we have a template-resources directory, if not the template 
is broken -->

  -      <j:set var="currenttemplateresources" 
value="${maven.jetspeed.genapp.resources}"/>

  -      <j:if test="${empty(currenttemplateresources)}">

  -        <fail>

  -          Found a template in ${maven.jetspeed.genapp.template.dir}, but it was 
broken.

  -        </fail>

  -      </j:if>

  -      

  -      <!-- Load template properties if available -->

  -      <u:available file="${maven.jetspeed.genapp.template.dir}/template.properties">

  -        <u:properties 
file="${maven.jetspeed.genapp.template.dir}/template.properties"/>

  -      </u:available>

  -      

  -      <!-- Ensure we have a project id, name, and package -->

  -      

  -      <j:set var="presetid" value="${maven.jetspeed.genapp.template.id}"/>

  -      <j:if test="${empty(presetid)}">

  -        <i:ask question="${maven.jetspeed.genapp.prompt.id}" 
answer="maven.jetspeed.genapp.template.id" 
default="${maven.jetspeed.genapp.default.id}"/>

  -      </j:if>

  -      

  -      <j:set var="presetname" value="${maven.jetspeed.genapp.template.name}"/>

  -      <j:if test="${empty(presetname)}">

  -        <i:ask question="${maven.jetspeed.genapp.prompt.name}" 
answer="maven.jetspeed.genapp.template.name" 
default="${maven.jetspeed.genapp.default.name}"/>

  -      </j:if>

  -      

  -      <j:set var="presetpackage" value="${maven.jetspeed.genapp.template.package}"/>

  -      <j:if test="${empty(presetpackage)}">

  -        <i:ask question="${maven.jetspeed.genapp.prompt.package}" 
answer="maven.jetspeed.genapp.template.package" 
default="${maven.jetspeed.genapp.default.package}"/>

  -      </j:if>

  -      

  -      <!-- Turn the specified package into a path -->

  -      <u:replace var="appPath" oldChar="." newChar="/" 
value="${maven.jetspeed.genapp.template.package}"/>

  -      

  -      <!-- We want to substitute in the id, name, and package name. -->

  -      <filter token="ID" value="${maven.jetspeed.genapp.template.id}"/>

  -      <filter token="NAME" value="${maven.jetspeed.genapp.template.name}"/>

  -      <filter token="PACKAGE" value="${maven.jetspeed.genapp.template.package}"/>

  -  

  -      <!-- split the list of dirs that need repackaged -->

  -      <u:tokenize var="maven.jetspeed.genapp.repackage.split" 
delim=",">${maven.jetspeed.genapp.repackage}</u:tokenize>

  -  

  -      <!-- copy resources that need repackaged, eg java files -->

  -      <j:forEach var="res" items="${maven.jetspeed.genapp.repackage.split}">

  -        <ant:copy todir="${basedir}/src/${res}/${appPath}" 

  -              filtering="true">

  -          <ant:fileset dir="${maven.jetspeed.genapp.resources}/src/${res}" />

  -        </ant:copy>      

  -      </j:forEach>

  -      

  -      <u:tokenize var="maven.jetspeed.genapp.properties.split" 
delim=",">${maven.jetspeed.genapp.properties}</u:tokenize>

  -      <!-- copy resources that need repackaged, eg java files -->

  -      <j:forEach var="res" items="${maven.jetspeed.genapp.properties.split}">

  -        <ant:copy todir="${basedir}/src/${res}" 

  -              filtering="true">

  -          <ant:fileset dir="${maven.jetspeed.genapp.resources}/src/${res}" />

  -        </ant:copy>

  -      </j:forEach>

  -  

  -      <!-- copy resources that just need filtered, eg project.xml -->

  -      <ant:copy todir="${basedir}" filtering="true">      

  -        <ant:fileset dir="${maven.jetspeed.genapp.resources}">

  -          <j:forEach var="res" items="${maven.jetspeed.genapp.filter}">

  -            <include name="${res}"/>

  -          </j:forEach>

  -        </ant:fileset>

  -      </ant:copy>

  -  

  -      <!-- copy rest of app unfiltered -->

  -      <ant:copy todir="${basedir}">      

  -        <ant:fileset dir="${maven.jetspeed.genapp.resources}">

  -          <ant:exclude name="src/java"/>

  -          <ant:exclude name="src/test"/>

  -          <j:forEach var="res" items="${maven.jetspeed.genapp.filter}">

  -            <exclude name="${res}"/>

  -          </j:forEach>

  -          <j:forEach var="res" items="${maven.jetspeed.genapp.repackage.split}">

  -            <exclude name="src/${res}/**"/>

  -          </j:forEach>

  -        </ant:fileset>

  -      </ant:copy>

  -      

  -      <!-- Run the specific jelly script for the template -->

  -      <u:available file="${maven.jetspeed.genapp.template.dir}/template.jelly">

  -        <echo>Use template.jelly file present in 
${maven.jetspeed.genapp.template.dir}.</echo>

  -        <j:import file="${maven.jetspeed.genapp.template.dir}/template.jelly" 
inherit="true"/> 

  -      </u:available>

  -    </define:tag>

  -  </define:taglib>

  -  

  -  <goal name="jetspeed:genapp">

  -     <!--<attainGoal name="genapp"/>-->

  -     <jetspeed:generate template="${maven.jetspeed.genapp.template}"/>

  -  </goal>

  -  

  -    

  -</project>

  +<?xml version="1.0"?>
  +<!--
  +Copyright 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.
  +-->
  +<!--
  +  =============================================================================
  +    Jetspeed plugin for Maven.
  +  =============================================================================
  +-->
  +<project 
  +  xmlns:j="jelly:core"
  +  xmlns:i="jelly:interaction"
  +  xmlns:ant="jelly:ant" 
  +  xmlns:define="jelly:define"
  +  xmlns:u="jelly:util"
  +  xmlns:jetspeed="jetspeed">
  +    <!--
  +     ========================================================================
  +       Create the custom WAR from binary distribution
  +     ========================================================================
  +  -->
  +    <goal name="jetspeed:war" description="Create custom .war file based on 
jetspeed binary distribution">
  +        <j:set var="maven.war.src" value="${war.stage.dir}/webapp"/>
  +        <j:if test="${maven.jetspeed.debug == 'true'}">
  +            <echo>[DEBUG] maven.src.dir = ${maven.src.dir}</echo>
  +            <echo>[DEBUG] maven.war.src = ${maven.war.src}</echo>
  +            <echo>[DEBUG] maven.build.dir = ${maven.build.dir}</echo>
  +            <echo>[DEBUG] maven.war.build.dir = ${maven.war.build.dir}</echo>
  +            <echo>[DEBUG] maven.dependency.classpath = 
${maven.dependency.classpath}</echo>
  +        </j:if>
  +        <!-- recreate target area -->
  +        <!--attainGoal name="war:init"/-->
  +        <mkdir dir="${maven.war.src}"/>
  +        <!-- recreate stage area -->
  +        <delete dir="${war.stage.dir}"/>
  +        <mkdir dir="${war.stage.dir}"/>
  +        <!-- copy distribution war to stage directory -->
  +        <j:forEach var="dep" items="${pom.dependencies}">
  +            <j:if test="${dep.getType() == 'distribution'}">
  +                <j:set var="dist.name" value="${dep.getArtifactId()}"/>
  +                <j:set var="internal.war.path" 
value="${dep.getProperty('dist.native.name')}"/>
  +                <j:set var="internal.war.path" 
value="${dep.getProperty('dist.native.name')}"/>
  +                <u:tokenize var="parts" delim=":">${dep.getId()}</u:tokenize>
  +                <j:set var="depid" value="${parts[0]}"/>
  +                <j:set var="dist.dependency.zip" 
value="${maven.repo.local}/${depid}/distributions/${dep.getArtifact()}"/>
  +                <j:if test="${maven.jetspeed.debug == 'true'}">
  +                    <echo>[DEBUG] dist.dependency.zip = 
${dist.dependency.zip}</echo>
  +                    <echo>[DEBUG] dist.name = ${dist.name}</echo>
  +                    <echo>[DEBUG] internal.war.path= ${internal.war.path}</echo>
  +                    <echo>[DEBUG] depid= ${depid}</echo>
  +                </j:if>
  +                <!-- extract .war file from distribution -->
  +                <unzip src="${dist.dependency.zip}" dest="${maven.war.src}">
  +                    <!-- This extracts the .war and expands it -->
  +                    <fileset dir=".">
  +                        <include name="**/*.war"/>
  +                        <exclude name="**/${pom.artifactId}.war"/>
  +                    </fileset>
  +                </unzip>
  +                <!-- delete work files from distribution -->
  +                <delete dir="${maven.war.src}/${internal.war.path}"/>
  +            </j:if>
  +        </j:forEach>
  +        <!-- copy application webapp source to stage webapp -->
  +        <copy todir="${maven.war.src}" overwrite="true" filtering="true">
  +            <fileset dir="${war.src}">
  +                <exclude name="**/*CVS*"/>
  +                <exclude name="**/*Entries*"/>
  +                <exclude name="**/*Repository*"/>
  +                <exclude name="**/*Tag*"/>
  +                <exclude name="**/*.log"/>
  +                <exclude name="**/*.log.1"/>
  +            </fileset>
  +        </copy>
  +        <!-- create project .jar file -->
  +        <attainGoal name="java:jar"/>
  +        <!-- copy jar to web app directory -->
  +        <copy file="${maven.build.dir}/${maven.final.name}.jar" 
todir="${maven.war.src}/WEB-INF/lib"/>
  +        <!-- remove class files -->
  +        <!--delete>
  +            <fileset dir="${maven.build.dir}/classes" includes="**/*.class"/>
  +        </delete-->
  +        <!-- set version tag -->
  +        <attainGoal name="jetspeed:war-version-tag"/>
  +        <!--  merge any property files and copy environment specific local 
registries -->
  +        <attainGoal name="jetspeed:war-config"/>
  +        <!-- create project .war file -->
  +        <attainGoal name="war:war"/>
  +    </goal>
  +    <!--
  +     ========================================================================
  +       Embed release version tag into bottom navigation
  +     ========================================================================
  +  -->
  +    <goal name="jetspeed:war-version-tag" description="Updates release version tag 
shown in the bottom navigation">
  +        <replace 
file="${maven.war.src}/WEB-INF/templates/vm/navigations/html/bottom.vm" 
token="(release)" value="${pom.currentVersion}"/>
  +    </goal>
  +    <!--
  +     ========================================================================
  +       Override jetspeed property files and add local registries
  +     ========================================================================
  +  -->
  +    <goal name="jetspeed:war-config" description="Override jetspeed property files 
and add local registries">
  +        <!-- define custom task for oeverriding properties -->
  +        <taskdef name="props_override" 
classname="org.apache.jetspeed.util.ant.OverwritePropertiesTask">
  +            <classpath>
  +                <path refid="maven.dependency.classpath"/>
  +            </classpath>
  +        </taskdef>
  +        <!-- set proper environment property files -->
  +        <echo>Targeting ${maven.env.name} environment ...</echo>
  +        <j:set var="props.dir" value="${maven.war.src}/WEB-INF/conf"/>
  +        <u:tokenize var="merge.prop.files" 
delim=",">${maven.merge.properties}</u:tokenize>
  +        <j:forEach items="${merge.prop.files}" var="prop.file">
  +            <j:if test="${maven.jetspeed.debug == 'true'}">
  +                <echo>[DEBUG] Merging ${prop.file}</echo>
  +            </j:if>
  +            <j:if test="${maven.env.name != null}">
  +                <j:if test="${maven.jetspeed.debug == 'true'}">
  +                    <echo>[DEBUG] Merging ${prop.file} for ${maven.env.name}</echo>
  +                </j:if>
  +                <props_override 
mergeBaseProperties="${props.dir}/${prop.file}.properties" 
mergeProperties="${props.dir}/${prop.file}-${maven.env.name}.properties.merge" 
includesDir="${props.dir}" failonerror="false"/>
  +            </j:if>
  +            <props_override 
mergeBaseProperties="${props.dir}/${prop.file}.properties" 
mergeProperties="${props.dir}/${prop.file}.properties.merge" 
includesDir="${props.dir}" failonerror="false"/>
  +        </j:forEach>
  +        <!-- environment specific local registries -->
  +        <j:if test="${maven.env.name == null}">
  +            <u:tokenize var="local.xreg.files" 
delim=",">${maven.copy.env.xreg}</u:tokenize>
  +            <j:forEach items="${local.xreg.files}" var="xreg.file">
  +                <j:if test="${maven.jetspeed.debug == 'true'}">
  +                    <echo>[DEBUG] Copying local-${xreg.file} for 
${maven.env.name}</echo>
  +                </j:if>
  +                <copy 
file="${props.dir}/local-${xreg.file}-${maven.env.name}.xreg.copy" 
toFile="${props.dir}/local-${xreg.file}.xreg" failonerror="false"/>
  +            </j:forEach>
  +        </j:if>
  +        <delete>
  +            <fileset dir="${props.dir}" includes="**/*.properties.merge"/>
  +            <fileset dir="${props.dir}" includes="**/local-*.xreg.copy"/>
  +        </delete>
  +    </goal>
  +    <!-- ================================================================== -->
  +    <!--H O T D E P L O Y   W E B A P P                        -->
  +    <!-- ================================================================== -->
  +    <goal name="jetspeed:hotdeploy" prereqs="java:compile" description="Hot deploys 
webapp classes on a local server">
  +        <attainGoal name="jetspeed:hotdeploy-config"/>
  +        <j:if test="${maven.jetspeed.debug == 'true'}">
  +            <echo>[DEBUG] maven.src.dir = ${maven.src.dir}</echo>
  +            <echo>[DEBUG] maven.war.src = ${maven.war.src}</echo>
  +            <echo>[DEBUG] maven.build.dir = ${maven.build.dir}</echo>
  +            <echo>[DEBUG] maven.war.build.dir = ${maven.war.build.dir}</echo>
  +        </j:if>
  +        <copy 
todir="${maven.war.appserver.home}/webapps/${pom.artifactId}/WEB-INF/classes">
  +            <fileset dir="${maven.build.dir}/classes">
  +                <!-- Do not include test files in the runtime jar -->
  +                <exclude name="**/Test*.*"/>
  +                <exclude name="**/test*.*"/>
  +                <!-- Also exclude the test cactus.properties file -->
  +                <exclude name="cactus.properties"/>
  +            </fileset>
  +        </copy>
  +        <copy todir="${maven.war.appserver.home}/webapps/${pom.artifactId}">
  +            <fileset dir="./stage/webapp">
  +                <exclude name="**/*.properties.merge"/>
  +            </fileset>
  +        </copy>
  +    </goal>
  +
  +    <goal name="jetspeed:hotdeploy-config"  description="Config Hot deploys webapp 
classes on a local server">
  +    </goal>
  +
  +    <!--
  +     ========================================================================
  +       Create the Jetspeed WAR
  +     ========================================================================
  +  -->
  +    <goal name="jetspeed:overlay" description="Overlay a vanilla Jetspeed War file 
on your existing code.">
  +        <!-- this seems required to setup the plugin context -->
  +        <attainGoal name="war:init"/>
  +        <j:set var="maven.jetspeed.prewar.dir" 
value="${pom.getPluginContext('maven-war-plugin').getVariable('maven.war.build.dir')}"/>
  +        <available file="${maven.jetspeed.prewar.dir}/${pom.artifactId}.war" 
property="maven.jetspeed.prewar.exists"/>
  +        <j:choose>
  +            <j:when test="${maven.jetspeed.prewar.exists}">
  +                <!-- Expand the project war -->
  +                <unwar src="${maven.jetspeed.prewar.dir}/${pom.artifactId}.war" 
dest="${maven.jetspeed.build.dir}/${pom.artifactId}"/>
  +                <attainGoal name="jetspeed:webapp-update"/>
  +                <!-- delete the war because it no longer reflects the expanded 
webapp -->
  +                <delete file="${maven.jetspeed.prewar.dir}/${pom.artifactId}.war"/>
  +            </j:when>
  +            <j:otherwise>
  +                <available 
file="${maven.jetspeed.prewar.dir}/${pom.artifactId}/WEB-INF" type="dir" 
property="maven.jetspeed.prewebapp.exists"/>
  +                <j:choose>
  +                    <j:when test="${maven.jetspeed.prewebapp.exists}">
  +                        <copy todir="${maven.jetspeed.build.dir}/${pom.artifactId}">
  +                            <fileset 
dir="${maven.jetspeed.prewar.dir}/${pom.artifactId}"/>
  +                        </copy>
  +                        <attainGoal name="jetspeed:webapp-update"/>
  +                    </j:when>
  +                    <j:otherwise>
  +                        <echo>
  +              Either a war or a webapp must exist. Please call the War plugin
  +              first.
  +            </echo>
  +                    </j:otherwise>
  +                </j:choose>
  +            </j:otherwise>
  +        </j:choose>
  +    </goal>
  +    <goal name="jetspeed:webapp-update">
  +        <unwar src="${maven.jetspeed.vanilla.war}" 
dest="${maven.jetspeed.build.dir}/${pom.artifactId}" overwrite="true"/>
  +        <attainGoal name="jetspeed:merge-properties"/>
  +    </goal>
  +    <goal name="jetspeed:merge-properties" description="Merge properties into 
vanilla property files">
  +        <taskdef name="overwriteproperties" 
classname="org.apache.jetspeed.util.ant.OverwritePropertiesTask">
  +            <classpath>
  +                <path refid="maven.dependency.classpath"/>
  +            </classpath>
  +        </taskdef>
  +        <echo> merge_jrp required </echo>
  +        <overwriteproperties 
mergeBaseProperties="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/JetspeedResources.properties"
 mergeProperties="${maven.jetspeed.merge.dir}/MergeJetspeedResources.properties" 
includesDir="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/"/>
  +        <echo> merge_security required </echo>
  +        <overwriteproperties 
mergeBaseProperties="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/JetspeedSecurity.properties"
 mergeProperties="${maven.jetspeed.merge.dir}/MergeJetspeedSecurity.properties" 
includesDir="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/"/>
  +        <echo> merge_trp required </echo>
  +        <overwriteproperties 
mergeBaseProperties="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/TurbineResources.properties"
 mergeProperties="${maven.jetspeed.merge.dir}/MergeTurbineResources.properties" 
includesDir="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/"/>
  +        <echo> merge_torque required </echo>
  +        <overwriteproperties 
mergeBaseProperties="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/Torque.properties"
 mergeProperties="${maven.jetspeed.merge.dir}/MergeTorque.properties" 
includesDir="${maven.jetspeed.build.dir}/${pom.artifactId}/WEB-INF/conf/"/>
  +    </goal>
  +    
  +    <!-- ================================================================== -->
  +    <!-- D E P L O Y   W E B A P P                                          -->
  +    <!-- ================================================================== -->
  +    <goal name="jetspeed:deploy" prereqs="jetspeed:war" description="Simple deploy 
of entire webapp to app server">
  +        <j:if test="${maven.jetspeed.debug == 'true'}"> 
  +            <echo>[DEBUG] maven.src.dir = ${maven.src.dir}</echo>
  +            <echo>[DEBUG] maven.war.src = ${maven.war.src}</echo>
  +            <echo>[DEBUG] maven.build.dir = ${maven.build.dir}</echo>
  +            <echo>[DEBUG] pom.artificactId = ${pom.artifactId}</echo>
  +        </j:if>  
  +        <delete dir="${maven.war.appserver.home}/webapps/${pom.artifactId}"/> 
  +        <copy  file="${maven.build.dir}/${pom.artifactId}.war" 
todir="${maven.war.appserver.home}/webapps/">
  +        </copy>        
  +        <unwar src="${maven.war.appserver.home}/webapps/${pom.artifactId}.war" 
dest="${maven.war.appserver.home}/webapps/${pom.artifactId}"/>
  +    </goal>
  +    
  +    <define:taglib uri="jetspeed">
  +    <!--
  +     |
  +     | @template
  +     |
  +     -->
  +    <define:tag name="generate">
  +      <!-- Get the template -->
  +      <!-- create a temporary variable with no dots in the name to get around a 
jexl bug -->
  +      <j:set var="presettemplate" value="${template}"/>
  +      <j:if test="${empty(presettemplate)}">
  +        <i:ask question="${maven.jetspeed.genapp.prompt.template}" 
answer="template" default="${maven.jetspeed.genapp.default.template}"/>
  +      </j:if>
  +      
  +      <!-- If template is in the user's home directory, use it -->    
  +      <u:available file="${user.home}/.maven/template/${template}">
  +        <j:set var="maven.jetspeed.genapp.template.dir" 
value="${user.home}/.maven/template/${template}"/>
  +      </u:available>
  +      
  +      <j:set var="currenttemplatedir" 
value="${maven.jetspeed.genapp.template.dir}"/>
  +      <j:if test="${empty(currenttemplatedir)}">
  +        <!-- The template was not found in user.home, check in the plugin resources 
-->
  +        <u:available file="${plugin.resources}/${template}">
  +          <j:set var="maven.jetspeed.genapp.template.dir" 
value="${plugin.resources}/${template}"/>
  +        </u:available>
  +      </j:if>
  +      
  +      <j:set var="currenttemplatedir" 
value="${maven.jetspeed.genapp.template.dir}"/>
  +      <j:if test="${empty(currenttemplatedir)}">
  +        <fail>
  +          Unable to locate a template named ${template}
  +        </fail>
  +      </j:if>
  +      
  +      <!-- Ensure that the template has a template-resources directory and use it 
-->
  +      <u:available file="${maven.jetspeed.genapp.template.dir}/template-resources">
  +        <!-- Set resources dir to the template resources directory -->
  +        <j:set var="maven.jetspeed.genapp.resources" 
value="${maven.jetspeed.genapp.template.dir}/template-resources"/>
  +      </u:available>
  +  
  +      <!-- Check that we have a template-resources directory, if not the template 
is broken -->
  +      <j:set var="currenttemplateresources" 
value="${maven.jetspeed.genapp.resources}"/>
  +      <j:if test="${empty(currenttemplateresources)}">
  +        <fail>
  +          Found a template in ${maven.jetspeed.genapp.template.dir}, but it was 
broken.
  +        </fail>
  +      </j:if>
  +      
  +      <!-- Load template properties if available -->
  +      <u:available file="${maven.jetspeed.genapp.template.dir}/template.properties">
  +        <u:properties 
file="${maven.jetspeed.genapp.template.dir}/template.properties"/>
  +      </u:available>
  +      
  +      <!-- Ensure we have a project id, name, and package -->
  +      
  +      <j:set var="presetid" value="${maven.jetspeed.genapp.template.id}"/>
  +      <j:if test="${empty(presetid)}">
  +        <i:ask question="${maven.jetspeed.genapp.prompt.id}" 
answer="maven.jetspeed.genapp.template.id" 
default="${maven.jetspeed.genapp.default.id}"/>
  +      </j:if>
  +      
  +      <j:set var="presetname" value="${maven.jetspeed.genapp.template.name}"/>
  +      <j:if test="${empty(presetname)}">
  +        <i:ask question="${maven.jetspeed.genapp.prompt.name}" 
answer="maven.jetspeed.genapp.template.name" 
default="${maven.jetspeed.genapp.default.name}"/>
  +      </j:if>
  +      
  +      <j:set var="presetpackage" value="${maven.jetspeed.genapp.template.package}"/>
  +      <j:if test="${empty(presetpackage)}">
  +        <i:ask question="${maven.jetspeed.genapp.prompt.package}" 
answer="maven.jetspeed.genapp.template.package" 
default="${maven.jetspeed.genapp.default.package}"/>
  +      </j:if>
  +      
  +      <!-- Turn the specified package into a path -->
  +      <u:replace var="appPath" oldChar="." newChar="/" 
value="${maven.jetspeed.genapp.template.package}"/>
  +      
  +      <!-- We want to substitute in the id, name, and package name. -->
  +      <filter token="ID" value="${maven.jetspeed.genapp.template.id}"/>
  +      <filter token="NAME" value="${maven.jetspeed.genapp.template.name}"/>
  +      <filter token="PACKAGE" value="${maven.jetspeed.genapp.template.package}"/>
  +  
  +      <!-- split the list of dirs that need repackaged -->
  +      <u:tokenize var="maven.jetspeed.genapp.repackage.split" 
delim=",">${maven.jetspeed.genapp.repackage}</u:tokenize>
  +  
  +      <!-- copy resources that need repackaged, eg java files -->
  +      <j:forEach var="res" items="${maven.jetspeed.genapp.repackage.split}">
  +        <ant:copy todir="${basedir}/src/${res}/${appPath}" 
  +              filtering="true">
  +          <ant:fileset dir="${maven.jetspeed.genapp.resources}/src/${res}" />
  +        </ant:copy>      
  +      </j:forEach>
  +      
  +      <u:tokenize var="maven.jetspeed.genapp.properties.split" 
delim=",">${maven.jetspeed.genapp.properties}</u:tokenize>
  +      <!-- copy resources that need repackaged, eg java files -->
  +      <j:forEach var="res" items="${maven.jetspeed.genapp.properties.split}">
  +        <ant:copy todir="${basedir}/src/${res}" 
  +              filtering="true">
  +          <ant:fileset dir="${maven.jetspeed.genapp.resources}/src/${res}" />
  +        </ant:copy>
  +      </j:forEach>
  +  
  +      <!-- copy resources that just need filtered, eg project.xml -->
  +      <ant:copy todir="${basedir}" filtering="true">      
  +        <ant:fileset dir="${maven.jetspeed.genapp.resources}">
  +          <j:forEach var="res" items="${maven.jetspeed.genapp.filter}">
  +            <include name="${res}"/>
  +          </j:forEach>
  +        </ant:fileset>
  +      </ant:copy>
  +  
  +      <!-- copy rest of app unfiltered -->
  +      <ant:copy todir="${basedir}">      
  +        <ant:fileset dir="${maven.jetspeed.genapp.resources}">
  +          <ant:exclude name="src/java"/>
  +          <ant:exclude name="src/test"/>
  +          <j:forEach var="res" items="${maven.jetspeed.genapp.filter}">
  +            <exclude name="${res}"/>
  +          </j:forEach>
  +          <j:forEach var="res" items="${maven.jetspeed.genapp.repackage.split}">
  +            <exclude name="src/${res}/**"/>
  +          </j:forEach>
  +        </ant:fileset>
  +      </ant:copy>
  +      
  +      <!-- Run the specific jelly script for the template -->
  +      <u:available file="${maven.jetspeed.genapp.template.dir}/template.jelly">
  +        <echo>Use template.jelly file present in 
${maven.jetspeed.genapp.template.dir}.</echo>
  +        <j:import file="${maven.jetspeed.genapp.template.dir}/template.jelly" 
inherit="true"/> 
  +      </u:available>
  +    </define:tag>
  +  </define:taglib>
  +  
  +  <goal name="jetspeed:genapp">
  +     <!--<attainGoal name="genapp"/>-->
  +     <jetspeed:generate template="${maven.jetspeed.genapp.template}"/>
  +  </goal>
  +  
  +    
  +</project>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to