Files
spring-webflow/build-spring-webflow/build.xml
2007-03-09 20:59:08 +00:00

237 lines
8.9 KiB
XML

<?xml version="1.0"?>
<!--
=======================================================================
A master build file for creating a release of Spring Web Flow
=======================================================================
-->
<project name="build-spring-webflow" default="release" xmlns:ivy="antlib:fr.jayasoft.ivy.ant">
<!-- Load local and user build preferences -->
<property file="build.properties" />
<property file="project.properties" />
<property file="${user.home}/build.properties" />
<!-- Try to load ivy here from local lib dir, in case the user has not already dropped
it into ant's lib dir (note that the latter copy will always take precedence).
We will not fail as long as local lib dir exists (it may be empty) and
ivy is in at least one of ant's lib dir or the local lib dir. -->
<path id="ivy.lib.path">
<fileset dir="${common.build.dir}/lib" includes="*.jar" />
</path>
<taskdef resource="fr/jayasoft/ivy/ant/antlib.xml" uri="antlib:fr.jayasoft.ivy.ant" classpathref="ivy.lib.path" />
<!-- simplistic pattern for zipping up sources -->
<selector id="project.source.zip.includes">
<or>
<filename name="common-build/**" />
<filename name="readme.txt" />
<filename name="webflow-architecture.xml" />
<filename name="webflow-workspace.xml" />
<and>
<or>
<filename name="build-spring-webflow/**" />
<filename name="spring-binding/**" />
<filename name="spring-webflow/**" />
<filename name="spring-webflow-samples/**" />
</or>
<and>
<!-- exclude core project derived artifacts -->
<filename name="*/docs/reference/lib/**" negate="true"/>
<filename name="*/docs/reference/target/**" negate="true"/>
<filename name="*/target/**" negate="true" />
<filename name="*/build.properties" negate="true" />
<filename name="*/lib/**" negate="true" />
</and>
<and>
<!-- exclude sample project derived artifacts -->
<filename name="*/*/docs/refrence/lib/**" negate="true"/>
<filename name="*/*/docs/refrence/target/**" negate="true"/>
<filename name="*/*/target/**" negate="true" />
<filename name="*/*/build.properties" negate="true" />
<filename name="*/*/lib/**" negate="true" />
</and>
</and>
</or>
</selector>
<!--
targets: displays all targets suitable for developer use
-->
<target name="targets">
<echo>
Master build for Spring Web Flow and Spring Web Flow samples.
Please execute
ant -p
to see a list of all relevant targets.
</echo>
</target>
<!--
init: initializes some common settings
-->
<target name="init" unless="init.done" depends="init.pre, init.post" />
<target name="init.pre">
<!-- ivy will determine the right order to build web flow main and samples -->
<property name="ivy.conf.dir" value="${common.build.dir}" />
<ivy:configure file="${ivy.conf.dir}/ivyconf.xml" />
<ivy:buildlist reference="modules">
<fileset dir="..">
<include name="spring-binding/build.xml" />
<include name="spring-webflow/build.xml" />
<include name="spring-webflow-samples/*/build.xml" />
</fileset>
</ivy:buildlist>
<tstamp>
<format property="internal.build.timestamp" pattern="yyyyMMddHHmmss" />
</tstamp>
<tstamp>
<format property="TSTAMPCOL" pattern="hh:mm" />
</tstamp>
<!-- default the release version (used in release archive zips) to the current timestamp -->
<property name="release.version" value="${internal.build.timestamp}" />
<!-- root of build hierarchy -->
<property name="target.dir" value="${basedir}/target" />
<!-- directory for release zips -->
<property name="target.release.dir" value="${target.dir}/release" />
<!-- directory for release zips -->
<property name="zip.toplevel.dir" value="spring-webflow-${release.version}" />
<property name="release.zip" value="spring-webflow-${release.version}.zip" />
<echo message='user.dir = "${user.dir}"' />
<echo message='ant.file = "${ant.file}"' />
<echo message='ant.java.version = "${ant.java.version}"' />
<echo message='release.version = "${release.version}"' />
</target>
<target name="init.post">
<property name="projects" value="modules" />
<property name="projects.names" refid="modules" />
<property name="init.done" value="true" />
</target>
<target name="clean" depends="init" description="Cleans all build output files from all projects">
<delete dir="${target.dir}" />
<echo>projects=${projects}</echo>
<echo>projects.names=${projects.names}</echo>
<subant target="clean" inheritall="false">
<buildpath refid="${projects}" />
</subant>
</target>
<target name="clean-all" depends="init" description="Cleans all build output files from all projects, and also retrieved libs">
<delete dir="${target.dir}" />
<echo>projects=${projects}</echo>
<subant target="clean-all" inheritall="false">
<buildpath refid="${projects}" />
</subant>
</target>
<target name="retrieve" depends="init" description="Does a retrieve in all projects">
<delete dir="${target.dir}" />
<echo>projects=${projects}</echo>
<echo>projects.names=${projects.names}</echo>
<subant target="retrieve" inheritall="false">
<buildpath refid="${projects}" />
</subant>
</target>
<target name="publish" depends="init" description="Calls publish targets on each project">
<echo>projects=${projects}</echo>
<subant target="publish" inheritall="false">
<buildpath refid="${projects}" />
</subant>
</target>
<target name="dist" depends="init" description="Calls dist targets on each project">
<echo>projects=${projects}</echo>
<subant target="dist" inheritall="false">
<buildpath refid="${projects}" />
</subant>
</target>
<target name="build-release-repo" depends="init"
description="Builds repo of all dependencies for all projects">
<echo>projects=${projects}</echo>
<subant target="retrieve-to-repo" inheritall="false">
<property name="retrieve.to.repo.dir" value="${target.dir}/repo" />
<property name="retrieve.to.repo.pattern"
value="${release.repo.ivy.retrieve.pattern}" />
<property name="retrieve.to.repo.pattern.ivy"
value="${release.repo.ivy.retrieve.ivy.pattern}" />
<buildpath refid="${projects}" />
</subant>
</target>
<target name="tests" depends="init" description="Calls test targets on each project">
<echo>projects=${projects}</echo>
<subant target="tests" inheritall="false">
<buildpath refid="${projects}" />
</subant>
</target>
<target name="javadoc" depends="init" description="Calls javadoc targets on each project">
<echo>projects=${projects}</echo>
<subant target="javadoc" inheritall="false" failonerror="no">
<buildpath refid="${projects}" />
</subant>
</target>
<target name="doc" depends="init" description="Calls doc targets on applicable projects">
<echo>projects=${projects}</echo>
<subant target="doc-all" inheritall="false" failonerror="false">
<buildpathelement location="../spring-webflow" />
</subant>
</target>
<target name="tomcat-copy-war" depends="init" description="Copies all war to tomcat webapp dir">
<echo>projects=${projects}</echo>
<subant target="tomcat-copy-war" inheritall="false" failonerror="no">
<buildpath refid="${projects}" />
</subant>
</target>
<target name="release" depends="dist, build-release-repo, javadoc, doc, gen.release.zip"
description="Generate the spring-webflow release archive" />
<target name="gen.release.zip" depends="init">
<mkdir dir="${target.release.dir}" />
<delete file="${target.release.dir}/${release.zip}" />
<zip zipfile="${target.release.dir}/${release.zip}">
<!-- important readme, license, and other text files -->
<zipfileset file="../spring-webflow/*.txt" prefix="${zip.toplevel.dir}" />
<!-- binary files -->
<zipfileset dir="../spring-binding/target/dist/jars" prefix="${zip.toplevel.dir}" />
<zipfileset dir="../spring-binding/target/dist/ivys" prefix="${zip.toplevel.dir}/ivys" />
<zipfileset dir="../spring-binding/target/javadocs" prefix="${zip.toplevel.dir}/docs/api-binding" />
<zipfileset dir="../spring-webflow/target/dist/jars" prefix="${zip.toplevel.dir}" />
<zipfileset dir="../spring-webflow/target/dist/ivys" prefix="${zip.toplevel.dir}/ivys" />
<zipfileset dir="../spring-webflow/target/javadocs" prefix="${zip.toplevel.dir}/docs/api" />
<zipfileset dir="../spring-webflow/docs/reference/target" prefix="${zip.toplevel.dir}/docs/reference">
<exclude name="**/html_single/**" />
<exclude name="**/pdf/images/**" />
</zipfileset>
<zipfileset dir="../spring-webflow/docs" includes="upgrade-guide.pdf" prefix="${zip.toplevel.dir}/docs" />
<zipfileset dir="${target.dir}/repo" prefix="${zip.toplevel.dir}/projects/repository" />
<!-- project sources -->
<zipfileset dir=".." prefix="${zip.toplevel.dir}/projects">
<selector refid="project.source.zip.includes" />
</zipfileset>
</zip>
</target>
</project>