blob: 8c5fac770ec6138775719f20b7eb6a26f9512233 [file] [log] [blame]
<?xml version="1.0"?>
<!--
/*
* Copyright 2005-2008 Les Hazlewood, Jeremy Haile
*
* 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.
*/
JSecurity root build file. If you want to understand how the JSecurity build environment
works (useful if you want to build from scratch or join the project as a developer),
Read this article:
An Ant Modular Build Environment for Enterprise Applications:
http://www.onjava.com/pub/a/onjava/2005/06/22/modularant.html
Reading this will instantly make you familiar with our build.
-->
<project name="jsecurity" default="all">
<!-- Static property definitions. These will remain the same for any module or submodule. -->
<property name="project.name" value="jsecurity"/>
<property name="root.base.dir" value="${basedir}"/>
<!-- Allow override of default build properties from properties file. -->
<property file="build.properties"/>
<!-- Environment variables (e.g. to pickup CATALINA_HOME for test deployment) -->
<property environment="env"/>
<!-- version of the product, see http://apr.apache.org/versioning.html
for details on this convention -->
<property name="major.version" value="0"/>
<property name="minor.version" value="9"/>
<property name="patch.version" value="0-alpha"/>
<property name="version" value="${major.version}.${minor.version}.${patch.version}"/>
<!-- application-wide config files: (all other config files should be in a respective
module or submodule) -->
<property name="root.etc.dir" value="${root.base.dir}/etc"/>
<property name="root.dist.dir" value="${root.base.dir}/build/${project.name}-${version}"/>
<!-- All 3rd party libraries are in here: -->
<property name="lib.dir" value="${root.base.dir}/lib"/>
<!-- *RELATIVE* definitions. These properties will reflect a directory structure
relative to where the build is being executed -->
<property name="base.dir" value="."/>
<property name="etc.dir" value="${base.dir}/etc"/>
<property name="src.dir" value="${base.dir}/src"/>
<property name="test.dir" value="${base.dir}/test"/>
<property name="build.dir" value="${base.dir}/build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="test.classes.dir" value="${build.dir}/test-classes"/>
<!-- <property name="dist.dir" value="${build.dir}/dist"/> -->
<property name="docs.dir" value="${root.dist.dir}/docs"/>
<property name="api.dir" value="${docs.dir}/api"/>
<property name="test.docs.dir" value="${docs.dir}/test-reports"/>
<!-- compile flags, can be overridden on the command line using the -D flag -->
<property name="compile.debug" value="true"/>
<property name="compile.deprecation" value="false"/>
<property name="compile.optimize" value="false"/>
<property name="dist.jarName" value="${project.name}.jar"/>
<property name="dist.jar" value="${root.dist.dir}/${dist.jarName}"/>
<path id="all.libs">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<taskdef name="retroweaver" classname="net.sourceforge.retroweaver.ant.RetroWeaverTask" >
<classpath>
<fileset dir="${lib.dir}/retroweaver" includes="*.jar"/>
</classpath>
</taskdef>
<!-- ===================================================================
- Clean all local and children build files
- =================================================================== -->
<target name="clean">
<delete dir="${build.dir}"/>
<ant dir="samples/spring" target="clean"/>
</target>
<target name="compile.core">
<mkdir dir="${classes.dir}"/>
<mkdir dir="${classes.dir}/META-INF"/>
<javac destdir="${classes.dir}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
optimize="${compile.optimize}"
failonerror="true"
classpathref="all.libs">
<src path="${src.dir}"/>
</javac>
<copy todir="${classes.dir}" preservelastmodified="true">
<fileset dir="${src.dir}">
<include name="**/*.properties"/>
<include name="**/*.xml"/>
<include name="**/*.dtd"/>
<include name="**/*.xsd"/>
</fileset>
</copy>
<copy todir="${classes.dir}/META-INF" preservelastmodified="true">
<fileset dir="${src.dir}">
<include name="**/*.tld"/>
</fileset>
</copy>
</target>
<target name="compile.spring" depends="compile.core" description="Build 3rd party Spring Framework support">
<javac destdir="${classes.dir}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
optimize="${compile.optimize}"
failonerror="true">
<classpath refid="all.libs"/>
<classpath location="${classes.dir}"/>
<src path="${root.base.dir}/support/spring/src"/>
</javac>
<copy todir="${classes.dir}" preservelastmodified="true">
<fileset dir="${root.base.dir}/support/spring/src">
<include name="**/*.properties"/>
<include name="**/*.xml"/>
<include name="**/*.dtd"/>
<include name="**/*.xsd"/>
</fileset>
</copy>
<copy todir="${classes.dir}/META-INF" preservelastmodified="true">
<fileset dir="${root.base.dir}/support/spring/src">
<include name="**/*.tld"/>
</fileset>
</copy>
</target>
<target name="compile.jboss" depends="compile.core" description="Build 3rd party JBoss support">
<javac destdir="${classes.dir}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
optimize="${compile.optimize}"
failonerror="true">
<classpath refid="all.libs"/>
<classpath location="${classes.dir}"/>
<src path="${root.base.dir}/support/jboss/src"/>
</javac>
<copy todir="${classes.dir}" preservelastmodified="true">
<fileset dir="${root.base.dir}/support/jboss/src">
<include name="**/*.properties"/>
<include name="**/*.xml"/>
<include name="**/*.dtd"/>
<include name="**/*.xsd"/>
</fileset>
</copy>
<copy todir="${classes.dir}/META-INF" preservelastmodified="true">
<fileset dir="${root.base.dir}/support/jboss/src">
<include name="**/*.tld"/>
</fileset>
</copy>
</target>
<target name="compile" depends="compile.core, compile.spring, compile.jboss"/>
<target name="jar" depends="compile" description="Create full JAR file with all JSecurity classes">
<mkdir dir="${root.dist.dir}"/>
<delete file="${dist.jar}"/>
<jar jarfile="${dist.jar}">
<fileset dir="${classes.dir}">
<include name="org/jsecurity/**"/>
</fileset>
<metainf dir="${classes.dir}/META-INF">
<include name="**"/>
</metainf>
<manifest>
<attribute name="Implementation-Title" value="${project.name}"/>
<attribute name="Implementation-Version" value="${version}"/>
<attribute name="${project.name}-Version" value="${version}"/>
<!-- Allow use of this JAR as a Java agent -->
<!-- <attribute name="Premain-Class" value="org.jsecurity.instrument.InstrumentationSavingAgent" /> -->
</manifest>
</jar>
<retroweaver target="1.3" inputjar="${dist.jar}" outputjar="${root.dist.dir}/${project.name}-jdk13.jar"/>
<retroweaver target="1.4" inputjar="${dist.jar}" outputjar="${root.dist.dir}/${project.name}-jdk14.jar"/>
</target>
<target name="samples.quickstart" depends="jar">
<ant dir="samples/quickstart"/>
</target>
<target name="samples.spring" depends="compile.spring">
<ant dir="samples/spring"/>
</target>
<target name="samples" depends="samples.quickstart,samples.spring"/>
<target name="samples.quickstart.deploy" depends="samples.quickstart">
<ant dir="samples/quickstart" target="deploy"/>
</target>
<!-- =================================================================== -->
<!-- Javadoc all main sources -->
<!-- =================================================================== -->
<target name="javadoc" description="Generate Javadocs">
<path id="javadocSrcPath">
<pathelement location="${src.dir}"/>
<pathelement location="${root.base.dir}/support/jboss/src"/>
<pathelement location="${root.base.dir}/support/spring/src"/>
</path>
<echo message="Generating JavaDoc API..."/>
<delete dir="${api.dir}" failonerror="false"/>
<mkdir dir="${api.dir}"/>
<javadoc destdir="${api.dir}" windowtitle="JSecurity API ${version}"
source="1.5" access="package" author="true" version="true" use="true"
defaultexcludes="true"
header='&lt;a href=\"http://www.jsecurity.org/\" target=\"_top\"&gt;JSecurity&lt;/a&gt;'>
<sourcepath refid="javadocSrcPath"/>
<arg value="-breakiterator"/>
<arg value="-J-Xmx128m"/>
<arg value="-J-XX:MaxPermSize=128m"/>
<!-- <arg value="-J-Dhttp.proxyHost=${javadoc.proxyhost}"/>
<arg value="-J-Dhttp.proxyPort=${javadoc.proxyport}"/> -->
<doctitle><![CDATA[<h1>JSecurity API ${version}</h1>]]></doctitle>
<bottom><![CDATA[<i>Copyright &copy; 2004-2008 <a href="http://www.jsecurity.org/" target="_top">JSecurity</a>.</i> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> var pageTracker = _gat._getTracker("UA-3614410-1"); pageTracker._initData(); pageTracker._trackPageview(); </script>]]></bottom>
<classpath refid="all.libs"/>
<packageset dir="${src.dir}">
<include name="org/jsecurity/**"/>
</packageset>
<packageset dir="${root.base.dir}/support/jboss/src">
<include name="org/jsecurity/**"/>
</packageset>
<packageset dir="${root.base.dir}/support/spring/src">
<include name="org/jsecurity/**"/>
</packageset>
<link href="http://java.sun.com/j2se/1.5/docs/api"/>
<link href="http://java.sun.com/j2ee/1.4/docs/api"/>
<!-- Jakarta Commons -->
<link href="http://jakarta.apache.org/commons/collections/apidocs/"/>
<link href="http://jakarta.apache.org/commons/logging/apidocs/"/>
<link href="http://jakarta.apache.org/commons/codec/apidocs/"/>
<link href="http://quartz.sourceforge.net/javadoc/"/>
<link href="http://static.springframework.org/spring/docs/2.0.x/api/"/>
<link href="http://ehcache.sourceforge.net/javadoc/"/>
</javadoc>
</target>
<!-- <name name="junit.check.warning" if="tests.failed">
<echo>
***********************************************************
* One or more unit tests failed!
* Check the reports located in ${test.docs.dir}
* for details...
***********************************************************
</echo>
</name>
<!- - ===================================================================
- quick-test-report - quickly generates test report documentation based
- on the xml test reports previously created during a junit task
- execution. (this does not run the task).
- =================================================================== - ->
<name name="test.report">
<echo message="Generating test reports..."/>
<junitreport todir="${test.docs.dir}">
<fileset dir=".">
<include name="**/TEST-*"/>
</fileset>
<report todir="${test.docs.dir}"/>
</junitreport>
</name>
<name name="unit.tests" depends="compile">
<echo message="Executing unit tests..."/>
<!- - Any properties files needed by test cases and/or Spring test case
configuration must be under the base root dir hierarchy so relative
file references may work properly. - ->
<copy toDir="${classes.dir}" preservelastmodified="true" file="${root.base.dir}/etc/log4j.properties"/>
<copy toDir="${classes.dir}" preservelastmodified="true" file="${root.base.dir}/db/build/gen/jdbc.properties"/>
<junit printsummary="withOutAndErr"
showoutput="true"
haltonfailure="no"
failureproperty="tests.failed"
errorproperty="tests.failed"
timeout="60000"
fork="yes">
<classpath refid="test.path"/>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<!- - allows us to generate web reports - ->
<batchtest fork="true" todir="${gen.dir}">
<fileset dir="${test.classes.dir}">
<include name="**/*Test.class"/>
<exclude name="**/*IntegrationTest.class"/>
<exclude name="**/*SystemTest.class"/>
<exclude name="**/*StressTest.class"/>
</fileset>
</batchtest>
</junit>
</name>
<name name="test" depends="dist">
<antcall name="template">
<param name="name" value="test"/>
</antcall>
</name> -->
<target name="src.zip" description="Create source ZIP (containing Java sources)">
<mkdir dir="${root.dist.dir}"/>
<delete file="${root.dist.dir}/${project.name}.src.zip"/>
<zip destfile="${root.dist.dir}/${project.name}.src.zip">
<fileset dir="${src.dir}">
<include name="org/jsecurity/**"/>
</fileset>
<fileset dir="${root.base.dir}/support/spring/src">
<include name="org/jsecurity/**"/>
</fileset>
<fileset dir="${root.base.dir}/support/jboss/src">
<include name="org/jsecurity/**"/>
</fileset>
</zip>
</target>
<target name="release" depends="jar,samples,src.zip,javadoc">
<property name="release.dir.name" value="${project.name}-${version}"/>
<property name="release.zip.name" value="${release.dir.name}-with-dependencies.zip"/>
<copy todir="${root.dist.dir}">
<fileset dir="${root.base.dir}">
<type type="file"/>
<exclude name="build/**"/>
<exclude name="**/.svn/**"/>
<exclude name="${release.dir.name}"/>
</fileset>
</copy>
<zip destfile="${build.dir}/${release.zip.name}"
basedir="${build.dir}"
includes="${release.dir.name}/**"
excludes="**/${release.zip.name}"/>
</target>
<!-- ===================================================================
- all - everything
- =================================================================== -->
<target name="all" depends="release"/>
</project>