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]
