freecol/build.xml

448 lines
17 KiB
XML
Raw Normal View History

<?xml version="1.0"?>
<project name="FreeCol" default="package">
2006-09-18 16:30:44 +02:00
<property name="freecol.name" value="freecol"/>
<property environment="env"/>
<property name="freecol.data.dir" value="${basedir}/data"/>
2004-05-11 00:34:42 +02:00
<property name="freecol.src.dir" value="${basedir}/src"/>
<property name="freecol.build.dir" value="${basedir}/build"/>
2006-09-18 16:30:44 +02:00
<property name="freecol.packaging.dir" value="${basedir}/packaging"/>
<property name="freecol.release.dir" value="${basedir}/dist"/>
<property name="freecol.javadoc.dir" value="${basedir}/doc/javadoc"/>
<property name="freecol.jar.file" value="${basedir}/FreeCol.jar"/>
<property name="freecol.metaserver.jar.file" value="${basedir}/FreeCol-metaserver.jar"/>
<property name="freecol.overview.file" value="${freecol.src.dir}/overview.html"/>
<path id="test.class.path">
<fileset dir="test/lib" includes="*.jar" />
2007-04-14 14:59:53 +02:00
<fileset dir="${basedir}/jars/" includes="*.jar" />
</path>
2007-03-10 16:05:22 +01:00
<condition property="isOsUnixLike">
<os family="unix" />
</condition>
<!-- TASK DEFINITIONS -->
<taskdef name="jsmoothgen"
classname="net.charabia.jsmoothgen.ant.JSmoothGen"
classpath="${freecol.build.dir}/jars/jsmoothgen-ant.jar"
/>
<taskdef name="izpack"
classname="com.izforge.izpack.ant.IzPackTask"
classpath="${freecol.build.dir}/jars/standalone-compiler.jar"
/>
2007-03-10 16:05:22 +01:00
2007-03-10 09:47:42 +01:00
<!--JarBundler is a feature-rich Ant task which will create a Mac OS X
application bundle from a list of Jar files and a main class name.
(GPL-Software) -> http://informagen.com/JarBundler/
Download and place jarbundler.jar into ${freecol.build.dir}/jars-->
<taskdef name="jarbundler"
classname="net.sourceforge.jarbundler.JarBundler"
classpath="${freecol.build.dir}/jars/jarbundler.jar"
/>
<target name="init" unless="TSTAMP">
<tstamp/>
</target>
<!-- Compiles the java source files and updates the version numbers. -->
<target name="compile" depends="init">
<mkdir dir="${freecol.build.dir}"/>
<javac srcdir="${freecol.src.dir}"
destdir="${freecol.build.dir}"
classpath="${basedir}/jars/higlayout.jar:${basedir}/jars/jsr173_1.0_api.jar:${basedir}/jars/wstx-lgpl-4.0pr1.jar"
debug="on"
optimize="on"
deprecation="off"
source="1.5"
/>
</target>
<target name="compile-test" depends="init">
<mkdir dir="${freecol.build.dir}"/>
<javac srcdir="test/src"
destdir="${freecol.build.dir}"
classpath="test/lib/junit.jar"
debug="on"
optimize="on"
deprecation="off"
source="1.4"
/>
</target>
<target name="build" depends="init,compile" description="Compiles the source files.">
<copy todir="${freecol.build.dir}">
<fileset dir="${freecol.src.dir}" includes="**/*.xml" />
</copy>
<native2ascii src="${freecol.src.dir}" dest="${freecol.build.dir}"
encoding="UTF-8"
includes="**/*.properties"
excludes="classes/** **/*_de_DE.properties **/*_hu.properties **/*_pt_BR.properties"/>
<native2ascii src="${freecol.src.dir}" dest="${freecol.build.dir}"
encoding="ISO-8859-1"
includes="**/*_de_DE.properties **/*_hu.properties **/*_pt_BR.properties"
excludes="classes/**" />
</target>
<!-- Compiles the source files and creates a JAR-file. -->
<target name="package" depends="init,build" description="Compiles the source files and creates a JAR-file.">
<jar jarfile="${freecol.jar.file}"
basedir="${freecol.build.dir}"
manifest="${basedir}/src/MANIFEST.MF"
includes="net/**, org/**"
excludes="**/CVS/**, **/metaserver/**"
/>
</target>
<!-- Compiles the metaserver and creates a JAR-file. -->
<target name="metaserver" depends="init,build" description="Compiles the metaserver and creates a JAR-file.">
<jar jarfile="${freecol.metaserver.jar.file}"
basedir="${freecol.build.dir}"
2004-05-11 00:34:42 +02:00
manifest="${basedir}/src/MANIFEST.MF"
includes="net/**, org/**"
excludes="**/CVS/**"
/>
</target>
<!--
Creates archives and installers for distribution and places these in the
"dist" directory.
-->
2006-11-26 12:21:23 +01:00
<target name="dist" description="Creates archives and installers for distribution.">
2007-03-10 09:47:42 +01:00
2006-11-26 12:21:23 +01:00
<input message="Please specify the release version (x.y.z): " addproperty="freecol.version" defaultvalue="custom_build" />
<property name="freecol.release.name" value="${freecol.name}-${freecol.version}"/>
<replaceregexp file="${freecol.src.dir}/net/sf/freecol/FreeCol.java"
match="FREECOL_VERSION\s*=\s*&quot;(.*?)&quot;\;"
replace="FREECOL_VERSION = &quot;${freecol.version}&quot;\;"
/>
<echo message="Game version updated in FreeCol.java" />
<antcall target="clean" />
<antcall target="package" />
2006-09-18 16:30:44 +02:00
<mkdir dir="${freecol.release.dir}"/>
<mkdir dir="${freecol.release.dir}/${freecol.name}"/>
2006-11-26 12:21:23 +01:00
2006-09-18 16:30:44 +02:00
<copy todir="${freecol.release.dir}/${freecol.name}">
<fileset dir="${basedir}" includes="FreeCol.jar"/>
<fileset dir="${freecol.packaging.dir}/common" excludes="**/CVS/**"/>
<fileset dir="${basedir}" includes="data/**" excludes="**/CVS/**"/>
<fileset dir="${basedir}" includes="jars/**" excludes="**/CVS/**"/>
2006-09-18 16:30:44 +02:00
</copy>
<zip destfile="${freecol.release.dir}/${freecol.release.name}.zip">
<fileset dir="${freecol.release.dir}" includes="${freecol.name}/**"/>
</zip>
<tar destfile="${freecol.release.dir}/${freecol.release.name}.tar.gz" compression="gzip">
<tarfileset dir="${freecol.release.dir}" includes="${freecol.name}/**"/>
</tar>
<copy todir="${freecol.release.dir}/${freecol.name}">
<fileset dir="${basedir}" includes="src/**" excludes="**/CVS/**"/>
<fileset dir="${basedir}" includes="build.xml" />
</copy>
<zip destfile="${freecol.release.dir}/${freecol.release.name}-src.zip">
<fileset dir="${freecol.release.dir}" includes="${freecol.name}/**"/>
</zip>
<tar destfile="${freecol.release.dir}/${freecol.release.name}-src.tar.gz" compression="gzip">
<tarfileset dir="${freecol.release.dir}" includes="${freecol.name}/**"/>
</tar>
<copy tofile="${freecol.build.dir}/installer-tmp.xml">
<fileset file="${freecol.build.dir}/installer.xml" />
</copy>
<replace file="${freecol.build.dir}/installer-tmp.xml"
token="%ant:freecol.version%"
value="${freecol.version}"
/>
2007-03-10 16:05:22 +01:00
<jsmoothgen project="${freecol.build.dir}/startup.jsmooth" skeletonroot="${freecol.build.dir}/skeletons"/>
<move todir="${freecol.release.dir}/${freecol.name}">
<fileset dir="${freecol.build.dir}" includes="freecol.exe"/>
</move>
<mkdir dir="${freecol.release.dir}/${freecol.name}/Uninstaller"/>
<jsmoothgen project="${freecol.build.dir}/uninstaller.jsmooth" skeletonroot="${freecol.build.dir}/skeletons"/>
<move todir="${freecol.release.dir}/${freecol.name}/Uninstaller">
<fileset dir="${freecol.build.dir}" includes="uninstaller.exe"/>
</move>
<izpack input="${freecol.build.dir}/installer-tmp.xml"
output="${freecol.release.dir}/${freecol.release.name}-installer.jar" installerType="standard"
basedir="${freecol.release.dir}/${freecol.name}"
izpackdir="${freecol.build.dir}"
/>
<delete quiet="true" file="${freecol.build.dir}/installer-tmp.xml"/>
<copy todir="${freecol.release.dir}">
<fileset dir="${freecol.build.dir}" includes="installer.jsmooth"/>
</copy>
<replace file="${freecol.release.dir}/installer.jsmooth"
token="%ant:freecol.release.name%"
value="${freecol.release.name}"
/>
<replace file="${freecol.release.dir}/installer.jsmooth"
token="%ant:freecol.installerjar%"
value="${freecol.release.dir}/${freecol.release.name}-installer.jar"
/>
<jsmoothgen project="${freecol.release.dir}/installer.jsmooth" skeletonroot="${freecol.build.dir}/skeletons"/>
2006-09-18 16:30:44 +02:00
<delete quiet="true" dir="${freecol.release.dir}/${freecol.name}"/>
<delete quiet="true" file="${freecol.release.dir}/installer.jsmooth"/>
2007-03-10 09:47:42 +01:00
<antcall target="macJavaBundle"/>
<antcall target="tarMacJavaBundle"/>
<antcall target="tarMacJavaBundleOnWindows"/>
<echo message="" />
<echo message="-------------------------------------------------"/>
<echo message="Distribution files created:"/>
<echo message="${freecol.release.dir}"/>
<echo message="-------------------------------------------------"/>
2006-09-18 16:30:44 +02:00
</target>
2007-03-10 09:47:42 +01:00
<target name="macJavaBundle" description="Buils a doubleclickable application bundle running on Mac os X">
2007-03-10 16:05:22 +01:00
<mkdir dir="${freecol.release.dir}"/>
<!-- Mac OS X -->
2007-03-10 09:47:42 +01:00
<jarbundler dir="${freecol.release.dir}"
name="FreeCol"
mainclass="net.sf.freecol.FreeCol"
version="${freecol.version}"
vmoptions="-Xmx256M"
jvmversion="1.5+"
arguments="--windowed --freecol-data FreeCol.app/Contents/Resources/"
stubfile="${freecol.build.dir}/skeletons/FreeCol"
icon="${basedir}/FreeCol.icns">
<!--
TODO: Where should I place the icon file?
Replace the value of the icon-attribute with the future icon path
-->
<jarfilelist dir="${basedir}" files="FreeCol.jar" />
<jarfileset dir="${basedir}/jars/">
<include name="**/*.jar" />
<exclude name="**/CVS" />
</jarfileset>
<resourcefileset dir="${basedir}/data">
<exclude name="**/CVS" />
</resourcefileset>
</jarbundler>
</target>
<target name="tarMacJavaBundle" if="isOsUnixLike" depends="macJavaBundle">
<delete file="${freecol.release.dir}/FreeCol.app/Contents/MacOS/FreeCol"/>
<symlink link="${freecol.release.dir}/FreeCol.app/Contents/MacOS/FreeCol" resource="/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub"/>
<exec executable="tar">
<arg value="cfvj"/>
<arg value="${freecol.release.dir}/${freecol.release.name}-mac.tar.bz2"/>
<arg value="-C"/>
<arg value="${freecol.release.dir}"/>
<arg value="FreeCol.app/"/>
</exec>
<delete quiet="true" dir="${freecol.release.dir}/FreeCol.app"/>
</target>
<target name="tarMacJavaBundleOnWindows" depends="macJavaBundle" unless="isOsUnixLike">
<echo message="Warning: You are building a Mac Os X Java Application Bundle containing a Copy Java Application Stub. Creating a bundle with the current copy of Java Launching Stub could lead to a future situation where the JavaApplicationStub file could become incompatible with a future OS X update. To avoid this, use a unix like system ... "/>
<tar destfile="${freecol.release.dir}/${freecol.release.name}-mac.tar.bz2" compression="bzip2">
<tarfileset dir="${freecol.release.dir}" mode="755"
includes="FreeCol.app/Contents/MacOS/FreeCol"
excludes="**/freecol*"
followsymlinks="false"
/>
<tarfileset followsymlinks="false" dir="${freecol.release.dir}">
<include name="FreeCol.app/**"/>
<exclude name="**/freecol*"/>
<exclude name="FreeCol.app/Contents/MacOS/FreeCol"/>
</tarfileset>
</tar>
<delete quiet="true" dir="${freecol.release.dir}/FreeCol.app"/>
</target>
2007-03-10 16:05:22 +01:00
<!-- Cleans the directories by removing auto-generated files. -->
<target name="clean" depends="init" description="Cleans the directories by removing auto-generated files.">
<delete quiet="true" includeEmptyDirs="true">
<fileset dir="${freecol.build.dir}" includes="net/**" />
<fileset dir="${freecol.build.dir}" includes="timestamp.inf" />
2006-09-18 16:30:44 +02:00
<fileset dir="${freecol.release.dir}" />
</delete>
<delete quiet="true" file="${freecol.jar.file}"/>
<delete quiet="true" dir="${freecol.javadoc.dir}"/>
</target>
<target name="fix" depends="init">
<fixcrlf srcdir="${freecol.src.dir}"
includes="**/*.java"
eol="asis"
tab="remove"
javafiles="yes"
tablength="4"
eof="asis"
/>
</target>
<!-- Generate JavaDoc documentation. -->
<target name="javadoc" depends="init" description="Generate JavaDoc documentation.">
<mkdir dir="${freecol.javadoc.dir}"/>
<javadoc sourcepath="${freecol.src.dir}"
overview="${freecol.overview.file}"
destdir="${freecol.javadoc.dir}"
packagenames="net.sf.freecol.*"
classpath="${basedir}/jars/higlayout.jar:${basedir}/jars/jsr173_1.0_api.jar:${basedir}/jars/wstx-lgpl-4.0pr1.jar"
Author="true"
Windowtitle="FreeCol Code Documentation"
/>
<echo message="" />
<echo message="-------------------------------------------------"/>
<echo message="JavaDoc-generated documentation created:"/>
<echo message="${freecol.javadoc.dir}"/>
<echo message="-------------------------------------------------"/>
</target>
<!-- example:
ant -lib test/lib/junit.jar -Dtest=common.model.Building test
-->
<target name="test" depends="build, build-unit-tests"
description="Runs a particular unit test"
>
<echo message="if the next task fails then please read the build script" />
<!-- if the next fails then here is the long answer:
http://ant.apache.org/faq.html#delegating-classloader
the short answer depends.
if you have Ant 1.6:
ant -lib test/lib/junit.jar testall
if you have a version of Ant prior to 1.6 on Windows:
set CLASSPATH=%CLASSPATH%;test\lib\junit.jar
ant testall
if you have a version of Ant prior to 1.6 on UNIX:
export CLASSPATH=${CLASSPATH}:test/lib/junit.jar; ant testall
-->
<junit printsummary="yes">
<classpath>
<pathelement location="${freecol.build.dir}" />
</classpath>
<formatter type="plain" />
<test todir="${freecol.build.dir}" name="net.sf.freecol.${test}Test" />
</junit>
</target>
<target name="testall" depends="build-unit-tests"
description="Runs all unit tests"
>
<echo message="if the next task fails then please read the build script" />
<!-- if the next fails then here is the long answer:
http://ant.apache.org/faq.html#delegating-classloader
the short answer depends.
if you have Ant 1.6:
ant -lib test/lib/junit.jar testall
if you have a version of Ant prior to 1.6 on Windows:
set CLASSPATH=%CLASSPATH%;test\lib\junit.jar
ant testall
if you have a version of Ant prior to 1.6 on UNIX:
export CLASSPATH=${CLASSPATH}:test/lib/junit.jar; ant testall
-->
<junit printsummary="yes">
<classpath>
<pathelement location="${freecol.build.dir}" />
</classpath>
<formatter type="plain" />
<batchtest fork="yes" todir="${freecol.build.dir}">
<fileset dir="test/src" includes="**/*Test.java" />
</batchtest>
</junit>
</target>
<target name="build-unit-tests" depends="build">
<depend srcDir="test/src" destDir="${freecol.build.dir}"
cache="${freecol.build.dir}" />
<javac srcdir="test/src" destdir="${freecol.build.dir}"
classpathref="test.class.path" debug="on" deprecation="off"
2007-04-14 14:59:53 +02:00
source="1.5" />
</target>
2007-04-08 11:35:40 +02:00
<target name="print-manual"
description="Creates the printable user guide.">
2006-12-07 08:44:35 +01:00
<delete file="doc/FreeCol.ind" />
2006-09-11 18:15:55 +02:00
<exec executable="pdflatex" dir="doc" >
<arg file="doc/FreeCol.tex"/>
</exec>
2006-12-07 08:44:35 +01:00
<exec executable="makeindex" dir="doc" >
<arg file="doc/FreeCol.idx"/>
</exec>
2006-09-11 18:15:55 +02:00
<exec executable="pdflatex" dir="doc" >
<arg file="doc/FreeCol.tex"/>
</exec>
</target>
2007-04-08 11:35:40 +02:00
<target name="online-manual"
description="Creates the online user guide.">
2006-12-07 08:44:35 +01:00
<delete file="doc/FreeCol.ind" />
<exec executable="htlatex" dir="doc" >
<arg file="doc/FreeCol.tex"/>
</exec>
<exec executable="tex" dir="doc">
<arg line="\def\filename{{FreeCol}{idx}{4dx}{ind}} \input idxmake.4ht" />
</exec>
<exec executable="makeindex" dir="doc" >
<arg file="doc/FreeCol.4dx"/>
</exec>
2006-09-11 18:15:55 +02:00
<exec executable="htlatex" dir="doc" >
<arg file="doc/FreeCol.tex"/>
</exec>
</target>
2007-04-08 11:35:40 +02:00
<target name="manual" depends="print-manual,online-manual"
description="Creates the printable and online user guides.">
2006-09-11 18:15:55 +02:00
</target>
2007-03-18 12:13:37 +01:00
<target name="fixTabsWindows">
<fixcrlf srcdir="${freecol.src.dir}" tab="remove" tablength="4"
includes="**/*.java" eol="crlf"
/>
</target>
<target name="fixTabsUnix">
<fixcrlf srcdir="${freecol.src.dir}" tab="remove" tablength="4"
includes="**/*.java" eol="lf"
/>
</target>
2007-04-08 11:35:40 +02:00
2007-04-08 12:40:02 +02:00
<!-- Prints a report on certain translations, which you can specify
by setting the localeKey property ("-DlocaleKey=fi", for example),
or all translations. Use "-emacs" in order to suppress extensive
logging. -->
2007-04-08 11:35:40 +02:00
<target name="translation-report" depends="build"
description="Creates report on translations.">
<condition property="localeKey" else="">
<isset property="localeKey" />
</condition>
<java classname="net.sf.freecol.tools.TranslationReport"
classpath="build/" >
<arg value="src/net/sf/freecol/client/gui/i18n/" />
<arg value="${localeKey}" />
</java>
</target>
2007-03-10 16:05:22 +01:00
</project>