blob: a2a2c90a49b543a711c11393e06ead63cb4fc6a2 [file] [log] [blame]
<!--
/**
* 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.
*/
-->
<project name="common" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<property name="version" value="0.1-dev" />
<tstamp>
<format property="year" pattern="yyyy"/>
<format property="DSTAMP" pattern="yyyy-MM-dd"/>
<format property="TSTAMP" pattern="HH:mm:ss"/>
<!-- datetime format that is safe to treat as part of a dotted version -->
<format property="dateversion" pattern="yyyy.MM.dd.HH.mm.ss" />
</tstamp>
<!-- Java Version we are compatible with -->
<property name="java.compat.version" value="6" />
<!-- Mahout Implementation Version -->
<!--
This can be any string value that does not include spaces
This will be used when creating build artifact file names.
By default, this should be set to "X.Y.N-dev" where X.Y.N is
"1 greater" then the last version released (on this branch).
NOTE: WHEN DOING A RELEASE CHANGE THE SPECVERSION TOO!
-->
<property name="version" value="0.1-dev" />
<!-- Mahout Specification Version -->
<!--
This will be used in the Manifest file, and therefore must
match the pattern "digit+{.digit+}*"
By default, this should be set to "X.Y.M.${dateversion}"
where X.Y.M is the last version released (on this branch).
-->
<property name="specversion" value="0.1.${dateversion}" />
<!-- Type of checksum to compute for distribution files -->
<property name="checksum.algorithm" value="md5" />
<!-- Destination for compiled classes and binaries -->
<property name="dest" value="build" />
<!-- Destination for distribution files (demo WAR, src distro, etc.) -->
<property name="dist" value="dist" />
<property name="memory" value="256m"/>
<dirname file="${ant.file.common}" property="common.dir"/>
<property name="shared-lib" value="${common.dir}/lib" />
<!-- Javadoc properties -->
<property name="javadoc.years" value="2008 - ${year}" />
<property name="build.docs" value="${dest}/docs"/>
<property name="build.javadoc" value="${build.docs}/api"/>
<property name="javadoc.access" value="protected"/>
<property name="javadoc.link.java"
value="http://java.sun.com/javase/6/docs/api/"/>
<property name="javadoc.link.junit"
value="http://junit.sourceforge.net/javadoc/"/>
<property name="javadoc.link.lucene"
value="http://lucene.apache.org/java/docs/api/"/>
<property name="javadoc.packages" value="org.apache.mahout.*"/>
<!-- JUnit -->
<property name="junit.output.dir" location="${dest}/test-results"/>
<property name="junit.reports" location="${dest}/test-results/reports"/>
<property name="junit.includes" value="**/Test*.java,**/*Test.java"/>
<property name="tests.verbose" value="false"/>
<property name="junit.jar" value="junit-3.8.2.jar"/>
<property name="junit-location.jar" value="${shared-lib}/${junit.jar}"/>
<path id="junit-path">
<pathelement location="${junit-location.jar}"/>
</path>
<!-- Macro for compilation -->
<macrodef name="mahout-javac">
<attribute name="destdir" />
<attribute name="classpathref" />
<element name="nested" optional="true" implicit="true" />
<sequential>
<mkdir dir="@{destdir}" />
<javac destdir="@{destdir}"
target="${java.compat.version}"
source="${java.compat.version}"
debug="on"
encoding="utf8"
sourcepath=""
classpathref="@{classpathref}">
<compilerarg value="-Xlint:all,-serial"/>
<nested />
</javac>
</sequential>
</macrodef>
<!-- Macro for building Jars -->
<macrodef name="mahout-jar">
<attribute name="destfile" />
<attribute name="basedir" />
<attribute name="includes" default="org/apache/**" />
<attribute name="manifest" default="${dest}/META-INF/MANIFEST.MF" />
<element name="nested" optional="true" implicit="true" />
<sequential>
<jar destfile="@{destfile}"
basedir="@{basedir}"
includes="@{includes}"
filesetmanifest="skip"
manifest="@{manifest}">
<metainf dir="${basedir}" includes="LICENSE.txt,NOTICE.txt"/>
<nested />
</jar>
</sequential>
</macrodef>
<!-- Macro for building checksum files
This is only needed until the "format" option is supported
by ant's built in checksum task
-->
<macrodef name="mahout-checksum">
<attribute name="file"/>
<!-- NOTE: we use the value of @{file} in the names any properties
set because macro's don't have variables, and otherwise we
wouldn't be able to checksum more then one file per build
-->
<sequential>
<checksum file="@{file}"
property="@{file}.sum"
algorithm="${checksum.algorithm}" />
<basename file="@{file}" property="@{file}.base" />
<concat destfile="@{file}.${checksum.algorithm}"
force="yes"
append="false"
fixlastline="yes">
<header trimleading="yes">${@{file}.sum} </header>
<!-- empty fileset to trick concat -->
<fileset dir="." excludes="**" />
<footer trimleading="yes">${@{file}.base}
</footer>
</concat>
</sequential>
</macrodef>
<target name="make-manifest" >
<!-- If possible, include the svnversion -->
<exec dir="." executable="svnversion" outputproperty="svnversion" failifexecutionfails="false">
<arg line="."/>
</exec>
<!-- no description, don't advertise -->
<mkdir dir="${dest}/META-INF/" />
<manifest mode="replace" file="${dest}/META-INF/MANIFEST.MF">
<!--
http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#JAR%20Manifest
http://java.sun.com/j2se/1.5.0/docs/guide/versioning/spec/versioning2.html
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Package.html
http://java.sun.com/j2se/1.5.0/docs/api/java/util/jar/package-summary.html
http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html
-->
<!-- Don't set 'Manifest-Version' it identifies the version of the
manifest file format, and should allways be 1.0 (the default)
Don't set 'Created-by' attribute, it's purpose is
to identify the version of java used to build the jar,
which ant will do by default.
Ant will happily override these with bogus strings if you
tell it to, so don't.
NOTE: we don't use section info because all of our manifest data
applies to the entire jar/war ... no package specific info.
-->
<attribute name="Extension-Name"
value="org.apache.mahout"/>
<attribute name="Specification-Title"
value="Apache Mahout Machine Learning"/>
<!-- spec version must match "digit+{.digit+}*" -->
<attribute name="Specification-Version"
value="${specversion}"/>
<attribute name="Specification-Vendor"
value="The Apache Software Foundation"/>
<attribute name="Implementation-Title"
value="org.apache.mahout"/>
<!-- impl version can be any string -->
<attribute name="Implementation-Version"
value="${version} ${svnversion} - ${user.name} - ${DSTAMP} ${TSTAMP}"/>
<attribute name="Implementation-Vendor"
value="The Apache Software Foundation"/>
<attribute name="X-Compile-Source-JDK"
value="${java.compat.version}"/>
<attribute name="X-Compile-Target-JDK"
value="${java.compat.version}"/>
</manifest>
</target>
</project>