commons-collections/build.xml

258 lines
13 KiB
XML

<!--
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
-->
<!--
"Collections" component of the Apache Commons Subproject
$Id$
-->
<project name="Collections" default="compile" basedir=".">
<!-- ========== Initialize Properties ===================================== -->
<property file="${user.home}/${component.name}.build.properties"/>
<property file="${user.home}/build.properties"/>
<property file="${basedir}/build.properties"/>
<property file="${basedir}/default.properties"/>
<property name="jdk.javadoc" value="http://download.oracle.com/javase/1.5.0/docs/api/"/>
<!-- ========== Construct compile classpath =============================== -->
<path id="compile.classpath">
<pathelement location="${build.home}/classes"/>
</path>
<!-- ========== Construct unit test classpath ============================= -->
<path id="test.classpath">
<pathelement location="${build.home}/classes"/>
<pathelement location="${build.home}/tests"/>
<pathelement location="${junit.jar}"/>
<pathelement location="${hamcrest.jar}"/>
<pathelement location="${easymock.jar}"/>
</path>
<!-- ========== Executable Targets ======================================== -->
<target name="init" description="Initialize and evaluate conditionals">
<echo message="-------- ${component.name} ${component.version} --------"/>
<filter token="name" value="${component.name}"/>
<filter token="package" value="${component.package}"/>
<filter token="version" value="${component.version}"/>
<filter token="compile.source" value="${compile.source}"/>
<filter token="compile.target" value="${compile.target}"/>
<mkdir dir="${build.home}"/>
</target>
<!-- ========== Compile Targets ========================================= -->
<target name="compile" depends="init" description="Compile shareable components">
<mkdir dir="${build.home}/classes"/>
<javac srcdir="${source.home}" destdir="${build.home}/classes" debug="${compile.debug}" deprecation="${compile.deprecation}" target="${compile.target}" source="${compile.source}" excludes="${compile.excludes}" optimize="${compile.optimize}" includeantruntime="false" encoding="${compile.encoding}">
<classpath refid="compile.classpath"/>
</javac>
<copy todir="${build.home}/classes" filtering="on">
<fileset dir="${source.home}" excludes="**/*.java,**/*.html"/>
</copy>
</target>
<target name="compile.tests" depends="compile" description="Compile unit test cases">
<mkdir dir="${build.home}/tests"/>
<javac srcdir="${test.home}" destdir="${build.home}/tests" debug="${compile.debug}" deprecation="off" target="${compile.target}" source="${compile.source}" optimize="${compile.optimize}" includeantruntime="false" encoding="${compile.encoding}">
<classpath refid="test.classpath"/>
</javac>
<copy todir="${build.home}/tests" filtering="on">
<fileset dir="${test.home}" excludes="**/*.java"/>
</copy>
</target>
<!-- ========== Unit Tests ========================================= -->
<target name="test" depends="compile.tests" description="Run all unit test cases">
<echo message="Running unit tests ..."/>
<mkdir dir="${build.home}/test-reports"/>
<junit printsummary="true" showoutput="true" fork="yes" haltonfailure="${test.failonerror}">
<classpath refid="test.classpath"/>
<formatter type="plain" usefile="true" />
<!-- If test.entry is defined, run a single test, otherwise run all valid tests -->
<test name="${test.entry}" todir="${build.home}/test-reports" if="test.entry"/>
<batchtest fork="yes" todir="${build.home}/test-reports" unless="test.entry">
<fileset dir="${test.home}">
<include name="**/*Test.java"/>
<exclude name="**/*$*"/>
<exclude name="**/TestUtils.java"/>
<exclude name="**/Abstract*.java"/>
<exclude name="**/BulkTest.java"/>
</fileset>
</batchtest>
</junit>
</target>
<target name="clean" description="Clean build and distribution directories">
<delete dir="${build.home}"/>
</target>
<target name="all" depends="clean,test,compile" description="Clean and compile all components"/>
<!-- ========== JavaDocs ========================================= -->
<target name="javadoc" depends="compile" description="Create component Javadoc documentation">
<mkdir dir="${build.home}"/>
<mkdir dir="${build.home}/apidocs"/>
<tstamp>
<format property="current.year" pattern="yyyy"/>
</tstamp>
<javadoc sourcepath="${source.home}"
destdir="${build.home}/apidocs"
overview="${source.home}/org/apache/commons/collections4/overview.html"
packagenames="org.apache.commons.*"
excludepackagenames="${javadoc.excludepackagenames}"
author="false"
version="true"
doctitle="&lt;h1&gt;Commons Lang ${component.version}&lt;/h1&gt;"
windowtitle="Lang ${component.version}"
bottom="Copyright &amp;copy; 2001-${current.year} - Apache Software Foundation"
use="true"
encoding="${compile.encoding}"
source="${compile.source}">
<classpath refid="compile.classpath"/>
<link href="${jdk.javadoc}"/>
<link href="${collections.javadoc}"/>
</javadoc>
</target>
<!-- ========== Jar Targets ========================================= -->
<target name="jar" depends="compile" description="Create jar">
<mkdir dir="${build.home}/classes/META-INF"/>
<copy file="LICENSE.txt" tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
<copy file="NOTICE.txt" tofile="${build.home}/classes/META-INF/NOTICE.txt"/>
<jar jarfile="${build.home}/${final.name}.jar">
<manifest>
<attribute name="Specification-Title" value="Commons Collections"/>
<attribute name="Specification-Version" value="${component.version}"/>
<attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Title" value="Commons Collections"/>
<attribute name="Implementation-Version" value="${component.version}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Vendor-Id" value="org.apache"/>
<attribute name="X-Compile-Source-JDK" value="${compile.source}"/>
<attribute name="X-Compile-Target-JDK" value="${compile.target}"/>
</manifest>
<fileset dir="${build.home}/classes">
<include name="**/*.class"/>
<include name="**/LICENSE.txt"/>
<include name="**/NOTICE.txt"/>
</fileset>
</jar>
</target>
<target name="javadoc-jar" depends="javadoc" description="Create JavaDoc jar">
<jar jarfile="${build.home}/${final.name}-javadoc.jar">
<manifest>
<attribute name="Specification-Title" value="Commons Collections API"/>
<attribute name="Specification-Version" value="${component.version}"/>
<attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Title" value="Commons Collections API"/>
<attribute name="Implementation-Version" value="${component.version}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Vendor-Id" value="org.apache"/>
</manifest>
<fileset dir="${build.home}/apidocs"/>
<fileset dir="${basedir}">
<include name="LICENSE.txt"/>
<include name="NOTICE.txt"/>
</fileset>
</jar>
</target>
<target name="source-jar" depends="init" description="Create Source jar">
<jar jarfile="${build.home}/${final.name}-sources.jar">
<manifest>
<attribute name="Specification-Title" value="Commons Collections Source"/>
<attribute name="Specification-Version" value="${component.version}"/>
<attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Title" value="Commons Collections Source"/>
<attribute name="Implementation-Version" value="${component.version}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Vendor-Id" value="org.apache"/>
</manifest>
<fileset dir="${source.home}">
<include name="**/*.java"/>
</fileset>
<fileset dir="${basedir}">
<include name="LICENSE.txt"/>
<include name="NOTICE.txt"/>
</fileset>
</jar>
</target>
<target name="test-jar" depends="init" description="Create Testframework jar">
<jar jarfile="${build.home}/${final.name}-tests.jar">
<manifest>
<attribute name="Specification-Title" value="Commons Collections Testframework"/>
<attribute name="Specification-Version" value="${component.version}"/>
<attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Title" value="Commons Collections Testframework"/>
<attribute name="Implementation-Version" value="${component.version}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Vendor-Id" value="org.apache"/>
</manifest>
<fileset dir="${test.home}">
<include name="**/*.java"/>
</fileset>
<fileset dir="${basedir}">
<include name="LICENSE.txt"/>
<include name="NOTICE.txt"/>
</fileset>
</jar>
</target>
<!-- ========== Distribution ========================================= -->
<target name="dist" depends="clean,jar,source-jar,javadoc-jar,test-jar" description="Create binary distribution">
<!-- binary distro -->
<zip destfile="${build.home}/${final.name}.zip">
<zipfileset dir="${basedir}" prefix="${final.name}"
includes="LICENSE.txt,
NOTICE.txt,
RELEASE-NOTES.txt"
/>
<zipfileset dir="${build.home}" includes="*.jar," prefix="${final.name}"/>
<zipfileset dir="${build.home}/apidocs" prefix="${final.name}/apidocs"/>
</zip>
<tar destfile="${build.home}/${final.name}.tar.gz" compression="gzip">
<zipfileset src="${build.home}/${final.name}.zip"/>
</tar>
<!-- source distro -->
<zip destfile="${build.home}/${final.name}-src.zip">
<zipfileset dir="${basedir}" prefix="${final.name}-src"
includes="build.xml,
default.properties,
build.properties.sample,
DEVELOPERS-GUIDE.html,
PROPOSAL.html,
LICENSE.txt,
NOTICE.txt,
README.txt,
pom.xml,
RELEASE-NOTES.txt"
/>
<zipfileset dir="${basedir}/src" prefix="${final.name}-src/src"/>
</zip>
<tar destfile="${build.home}/${final.name}-src.tar.gz" compression="gzip">
<zipfileset src="${build.home}/${final.name}-src.zip"/>
</tar>
</target>
</project>