blob: 2833783ef6b1537f7add3140d3f660d3affbe64d [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2003-2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- $Rev$ $Date$ -->
<project default="default"
xmlns:j="jelly:core"
xmlns:u="jelly:util"
xmlns:ant="jelly:ant"
xmlns:maven="jelly:maven"
xmlns:define="jelly:define"
xmlns:deploy="geronimo:deploy"
xmlns:velocity="jelly:velocity"
>
<!-- ================= -->
<!-- Global Properties -->
<!-- ================= -->
<!-- Determine what the top-level project root is -->
<j:set var="project.root" value="${pom.parentBasedir().getParentFile().getCanonicalFile()}"/>
<!-- ==================== -->
<!-- Default Global Goals -->
<!-- ==================== -->
<goal name="default">
<attainGoal name="jar:install"/>
</goal>
<goal name="build">
<attainGoal name="default"/>
</goal>
<goal name="rebuild">
<attainGoal name="clean"/>
<attainGoal name="build"/>
</goal>
<!-- For testing -->
<goal name="hello">
<ant:echo>
H E L L O
---------
Module Name ${pom.name} [${pom.currentVersion}]
Geronimo: ${geronimo_version}
OpenEJB: ${openejb_version}
</ant:echo>
</goal>
<!-- Remove classes which depend on changed files, so they will rebuild. -->
<preGoal name="java:compile">
<j:if test="${sourcesPresent}">
<ant:depend srcdir="${maven.compile.source}"
destdir="${maven.build.dest}"
dump="false"
closure="false">
<j:forEach var="sm" items="${pom.build.sourceModifications}">
<ant:available property="classPresent" classname="${sm.className}"/>
<j:if test="${classPresent != 'true'}">
<j:forEach var="exclude" items="${sm.excludes}">
<ant:exclude name="${exclude}"/>
</j:forEach>
<j:forEach var="include" items="${sm.includes}">
<ant:include name="${include}"/>
</j:forEach>
</j:if>
</j:forEach>
</ant:depend>
</j:if>
</preGoal>
<!-- Construct dependency lists for inclusion in generated jar. -->
<!-- putting this goal here produces a circular dependency -->
<!-- <postGoal name="java:compile">
<attainGoal name="geronimo:dependency"/>
</postGoal>
-->
<!-- Remove the log files -->
<goal name="clobber"
description="Removes all (non-repository installed) build generated files">
<!-- Let clean:clean do some work first -->
<attainGoal name="clean:clean"/>
<j:jelly xmlns="jelly:ant">
<delete quiet="false" failonerror="false">
<fileset dir="${basedir}">
<include name="maven.log"/>
<include name="velocity.log*"/>
<include name="junit*.properties"/>
</fileset>
</delete>
</j:jelly>
</goal>
<!-- Cleanse source files -->
<goal name="cleanse-sources"
description="Cleanse source files, removing tabs and translating CRLF -> LF">
<j:scope xmlns="jelly:ant">
<!-- Cleanse sources -->
<j:set var="srcdir" value="${basedir}/src/java"/>
<u:available file="">
<fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">
<include name="**/*.java"/>
</fixcrlf>
<fixcrlf srcdir="${basedir}" eol="lf" eof="remove" tab="remove" tablength="4">
<include name="**/*.xml"/>
<include name="**/*.html"/>
</fixcrlf>
</u:available>
<!-- Cleanse test sources -->
<j:set var="srcdir" value="${basedir}/src/test"/>
<u:available file="${srcdir}">
<fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">
<include name="**/*.java"/>
<include name="**/*.xml"/>
<include name="**/*.html"/>
</fixcrlf>
<fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">
<include name="**/*.xml"/>
<include name="**/*.html"/>
</fixcrlf>
</u:available>
<!-- Cleanse xdocs -->
<j:set var="srcdir" value="${basedir}/src/xdocs"/>
<u:available file="${srcdir}">
<fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">
<include name="**/*.xml"/>
<include name="**/*.html"/>
</fixcrlf>
</u:available>
<!-- Cleanse build files -->
<fixcrlf srcdir="." eol="lf" tab="remove" eof="remove" tablength="4">
<include name="project.xml"/>
<include name="maven.xml"/>
</fixcrlf>
<!-- Cleanse scripts -->
<j:set var="srcdir" value="${basedir}/src/bin"/>
<u:available file="${srcdir}">
<fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">
<include name="**/*"/>
</fixcrlf>
</u:available>
</j:scope>
</goal>
<goal name="java-src"
description="Creates an archive containing only java source.">
<u:available file="${basedir}/src/java">
<j:set var="javaSrcBuilt" value="true"/>
<ant:mkdir dir="${basedir}/target"/>
<ant:jar destfile="${basedir}/target/${pom.artifactId}-${pom.currentVersion}-java-src.jar">
<fileset dir="${basedir}/src/java"/>
<u:available file="${basedir}/target/xmlbeans">
<fileset dir="${basedir}/target/xmlbeans"/>
</u:available>
</ant:jar>
</u:available>
<j:if test="${javaSrcBuilt != 'true'}">
<u:available file="${basedir}/target/xmlbeans">
<j:set var="java-src.built" value="true"/>
<ant:mkdir dir="${basedir}/target"/>
<ant:jar destfile="${basedir}/target/${pom.artifactId}-${pom.currentVersion}-java-src.jar">
<fileset dir="${basedir}/target/xmlbeans"/>
</ant:jar>
</u:available>
</j:if>
</goal>
<!-- If there is no src/test directory you can
turn off clover in that module by overriding this goal to do nothing -->
<goal name="clover.wrapper">
<attainGoal name="clover"/>
</goal>
<preGoal name="clover:test">
<j:set var="cloveroverride" value="true"/>
</preGoal>
<!-- Check if the tests need to run -->
<preGoal name="test:test">
<j:if test="${context.getVariable('maven.test.force') == null}">
<j:if test="${cloveroverride != 'true'}">
<j:set var="uptodatePropName" value="tests.uptodate"/>
<j:remove var="${uptodatePropName}"/>
<ant:mkdir dir="${basedir}/target/test-reports/"/>
<j:set var="uptodateFile" value="${basedir}/target/test-reports/tstamp"/>
<ant:uptodate property="${uptodatePropName}" targetfile="${uptodateFile}">
<ant:srcfiles dir="${basedir}/src/" includes="**/*"/>
</ant:uptodate>
<j:if test="${context.getVariable(uptodatePropName) == 'true'}">
<ant:echo>NOTICE: Skipping tests; they seem to have passed already</ant:echo>
<j:set var="maven.test.skip" value="true"/>
<j:set var="unitTestSourcesPresent" value="false"/>
</j:if>
</j:if>
</j:if>
</preGoal>
<!-- Update the timestamp of the last successful test -->
<postGoal name="test:test">
<j:if test="${context.getVariable('maven.test.failure') == null}">
<ant:touch file="${basedir}/target/test-reports/tstamp"/>
</j:if>
</postGoal>
<postGoal name="war:webapp">
<j:set var="usesJar" value="${maven.war.usesJar}"/>
<ant:echo>Use classes.jar ? ${usesJar}</ant:echo>
<j:if test="${usesJar}">
<j:set var="webroot" value="${basedir}/target/${pom.artifactId}/WEB-INF"/>
<ant:mkdir dir="${webroot}/work"/>
<ant:move todir="${basedir}/target/temp" includeEmptyDirs="false" failonerror="false">
<ant:fileset dir="${webroot}/classes">
<ant:include name="**/*" />
</ant:fileset>
<ant:fileset dir="${webroot}/work">
<ant:include name="**/*.class" />
</ant:fileset>
</ant:move>
<ant:available file="${basedir}/target/temp" property="classes.present"/>
<j:if test="${classes.present}">
<ant:jar destfile="${webroot}/lib/classes.jar" basedir="${basedir}/target/temp"/>
<ant:delete includeemptydirs="true" failonerror="false">
<ant:fileset dir="${webroot}/classes" includes="**/*"/>
<ant:fileset dir="${webroot}/work"/>
<ant:fileset dir="${basedir}/target/temp"/>
</ant:delete>
</j:if>
</j:if>
</postGoal>
<!-- ==================================================== -->
<!-- Pre compile JSPs -->
<!-- ==================================================== -->
<goal name="preCompile">
<!-- Output folder for compiled jsps. -->
<j:set var="outDir" value="${basedir}/target/${pom.artifactId}/WEB-INF/work"/>
<ant:mkdir dir="${outDir}"/>
<j:set var="webroot" value="${basedir}/target/${pom.artifactId}"/>
<ant:path id="jspc.classpath">
<ant:path refid="maven.dependency.classpath"/>
<ant:pathelement path="${maven.build.dest}"/>
</ant:path>
<ant:echo>Pre-compiling JSPs from ${basedir}/src/webapp to ${outDir}.</ant:echo>
<!-- ant:taskdef classname="org.apache.jasper.JspC" name="ant:jasper2" classpathref="jspc.classpath"/>
<ant:jasper2
validateXml="false"
uriroot="${webroot}"
webapp="${basedir}/src/webapp"
webXmlFragment="${webroot}/generated_web.xml"
addWebXmlMappings="true"
outputDir="${outDir}" / -->
<ant:java classname="org.apache.jasper.JspC" fork="true" failonerror="true" classpathref="jspc.classpath">
<arg value="-d"/>
<arg value="${outDir}"/>
<arg value="-webapp"/>
<arg value="${basedir}/src/webapp"/>
<arg value="-uriroot"/>
<arg value="${webroot}"/>
<arg value="-webinc"/>
<arg value="${webroot}/WEB-INF/generated-web.xml"/>
</ant:java>
<ant:echo>Compiling generated Java files in ${outDir}.</ant:echo>
<ant:javac
srcdir="${outDir}"
destdir="${outDir}"
debug="${maven.compile.debug}"
deprecation="${maven.compile.deprecation}"
optimize="${maven.compile.optimize}"
classpathref="jspc.classpath"/>
<ant:echo>Merging generated-web.xml with our web.xml</ant:echo>
<deploy:mergeWebXML uriRoot="${webroot}" />
</goal>
</project>