<?xml version="1.0" encoding="UTF-8"?>
<project default="dist" name="JLM">
<!-- load ChangeLog and set property jlm.version accordingly -->
<loadfile property="jlm.version" srcFile="ChangeLog">
<filterchain>
<linecontainsregexp>
<regexp pattern="[0-9]+:"/>
</linecontainsregexp>
<headfilter lines="1"/>
<striplinebreaks/>
<striplinebreaks linebreaks=":"/>
</filterchain>
</loadfile>
<property name="base.dir" value="."/>
<property name="dist.dir" value="${base.dir}/dist"/>
<property name="lib.dir" value="${base.dir}/lib"/>
<property name="classes.dir" value="${base.dir}/bin"/>
<property name="src.dir" value="${base.dir}/src"/>
<property name="site.dir" value="${base.dir}/site"/>
<property file="${base.dir}/keystore.properties"/>
<path id="project.class.path">
<pathelement path="${classes.dir}"/>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="clean" description="clean project">
<delete dir="${classes.dir}"/>
<delete dir="${dist.dir}"/>
<delete dir="${site.dir}/lib"/>
<delete dir="${site.dir}/po"/>
</target>
<target name="compile" description="compile all source files">
<mkdir dir="${classes.dir}"/>
<javac classpathref="project.class.path" destdir="${classes.dir}" srcdir="${src.dir}" includeantruntime="false" />
</target>
<target name="dist" depends="i18n-generate-jar, compile, updateversion" description="build a standalone application jar file">
<mkdir dir="${dist.dir}"/>
<jar destfile="${dist.dir}/jlm-${jlm.version}.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Built-By" value="M. Quinson and G. Oster" />
<attribute name="Main-Class" value="jlm.core.ui.JavaLearningMachine" />
<attribute name="Class-Path" value="." />
</manifest>
<fileset dir="${classes.dir}" excludes="**/.gitignore **/*.java **/*.css **/*.html"/>
<fileset dir="${src.dir}" includes="**/*.py **/*.java **/*.html **/*.css **/*.png **/*.map" excludes="**/.gitignore"/>
<fileset dir="${lib.dir}" excludes="*.jar *.pl l10n/*"/>
<fileset dir="${lib.dir}" excludes="*.jar *.pl l10n-engine/*"/>
<!--<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/twitter4j-2.1.0-SNAPSHOT.jar" /> -->
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/twitter4j-core-2.1.4-SNAPSHOT.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jsyntaxpane-0.9.6~r156.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/miglayout-3.7.4.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/langtools-beta.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jython/antlr3-runtime.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jython/asm3-3.2.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jruby-1.5.6-5.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jython/jython-2.5.1.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jython/js-1.7R3.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/httpclient-4.1.2.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/httpcore-4.1.2.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/commons-logging-1.1.1.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/commons-codec-1.4.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/gettext-commons-0.9.6.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/smackx.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/smack.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/json_simple-1.1.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jlm-messages.jar" />
</jar>
</target>
<target name="dist-src" depends="compile, updateversion" description="build a standalone application jar file">
<mkdir dir="${dist.dir}"/>
<zip destfile="${dist.dir}/jlm-src-${jlm.version}.zip">
<fileset dir="${src.dir}" includes="**/*.java **/*.html **/*.css **/*.png **/*.map" excludes="**/.gitignore"/>
<fileset dir="${lib.dir}" excludes="*.jar *.pl"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/twitter4j-core-2.1.4-SNAPSHOT.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jsyntaxpane-0.9.6~r156.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/miglayout-3.7.4.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/langtools-beta.jar" />
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jython/antlr3-runtime.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jython/asm3-3.2.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jruby-1.5.6-5.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jython/jython-2.5.1.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/jython/js-1.7R3.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/httpclient-4.1.2.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/httpcore-4.1.2.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/commons-logging-1.1.1.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/commons-codec-1.4.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/smackx.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/smack.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${lib.dir}/json_simple-1.1.jar" />
</zip>
</target>
<target name="dist-web" depends="compile, updateversion" description="build webstart application jar files">
<mkdir dir="${site.dir}/lib"/>
<jar destfile="${site.dir}/lib/jlm-webstart.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Built-By" value="M. Quinson and G. Oster" />
<attribute name="Main-Class" value="jlm.ui.JavaLearningMachine" />
<attribute name="Class-Path" value="." />
</manifest>
<fileset dir="${classes.dir}" excludes="**/.gitignore **/*.java **/*.css **/*.html"/>
<fileset dir="${src.dir}" includes="**/*.java **/*.py **/*.html **/*.css **/*.map **/*.png" excludes="**/.gitignore"/>
<fileset dir="${lib.dir}" excludes="*.jar"/>
</jar>
<copy todir="${site.dir}/lib">
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</copy>
<signjar alias="${keystore.alias}" keystore="${keystore.file}" storepass="${keystore.passwd}" lazy="true">
<path>
<fileset dir="${site.dir}/lib" includes="**/*.jar" />
</path>
</signjar>
</target>
<target name="javadoc" description="Create Javadocs">
<mkdir dir="${site.dir}/javadoc/"/>
<javadoc
destdir="${site.dir}/javadoc/">
<fileset dir="${src.dir}/jlm" includes="**/*.java" />
<fileset dir="${src.dir}/universe" includes="**/*.java" />
</javadoc>
</target>
<target name="updateversion" description="Update the version number in the properties file">
<propertyfile file="${lib.dir}/resources/jlm.configuration.properties">
<entry key="jlm.minor.version" value="${jlm.version}" operation="="/>
</propertyfile>
</target>
<property name="gettexttasks.jar" value="lib/gettext-ant-tasks-0.9.3.jar"/>
<target name="i18n-init" description="Loads the Ant gettext tasks">
<taskdef name="gettext-extract" classname="org.xnap.commons.ant.gettext.GettextExtractKeysTask" classpath="${gettexttasks.jar}"/>
<taskdef name="gettext-merge" classname="org.xnap.commons.ant.gettext.GettextMergeKeysTask" classpath="${gettexttasks.jar}"/>
<taskdef name="gettext-generate-default" classname="org.xnap.commons.ant.gettext.GenerateDefaultBundleTask" classpath="${gettexttasks.jar}"/>
<taskdef name="gettext-dist" classname="org.xnap.commons.ant.gettext.GettextDistTask" classpath="${gettexttasks.jar}"/>
</target>
<target name="i18n-extract" description="Extracts message keys from the source code" depends="i18n-init">
<gettext-extract keysFile="jlm.pot" poDirectory="lib/l10n-engine">
<fileset dir="${src.dir}" includes="**/*.java"/>
</gettext-extract>
</target>
<target name="i18n-update" description="Merges newly extracted messages into existing po files" depends="i18n-extract">
<gettext-merge keysFile="jlm.pot" poDirectory="lib/l10n-engine"/>
</target>
<target name="i18n-check" description="Checks that the extracted messages are correct" depends="i18n-update">
<!-- single quote sign is used to escape the format strings in MessageFormat;
'' has to be used to get a single quote displayed.
That's unfortunate given the amount of ' we have in french and english but anyway.
In addition, the strings without {0} are not passed to MessageFormat by i18n.tr().
See: https://code.google.com/p/gettext-commons/issues/detail?id=55 -->
<exec executable="msggrep">
<arg value="-K"/>
<arg value="-e"/>
<arg value="[^']'[^'].*{"/>
<arg value="--sort-by-file"/>
<arg value="lib/l10n-engine/fr.po"/>
<redirector output="errors-msgid.txt" alwayslog="true"/>
</exec>
<exec executable="msggrep">
<arg value="-T"/>
<arg value="-e"/>
<arg value="[^']'[^'].*{"/>
<arg value="--sort-by-file"/>
<arg value="lib/l10n-engine/fr.po"/>
<redirector output="errors-msgstr.txt" alwayslog="true"/>
</exec>
</target>
<target name="i18n-generate-jar" description="Generates Java ResourceBundles and jars them up" depends="i18n-update, i18n-check">
<mkdir dir="${site.dir}/po"/>
<gettext-dist targetBundle="org.jlm.i18n.Messages" poDirectory="lib/l10n-engine" outputDirectory="${site.dir}/po" />
<jar destfile="lib/jlm-messages.jar" basedir="${site.dir}/po" includes="org/**"/>
<delete dir="${site.dir}/po"/>
</target>
<!-- This requires Java7 to work, but I'd prefer to support for Java6
a bit longer if possible. Disable this for now, sorry Franck.
<property name="mac.dir" value="${lib.dir}/mac-resources"/>
<property name="fr.lproj.dir" value="${mac.dir}/fr.lproj"/>
<property name="mac.app.name" value="JavaLearningMachine"/>
<property name="mac.bundle.dir" value="${dist.dir}/${mac.app.name}.app"/>
<taskdef name="bundleapp"
classname="com.oracle.appbundler.AppBundlerTask"
classpath="${lib.dir}/appbundler-1.0.jar" />
<target name="build-Mac.app-bundle">
<bundleapp outputdirectory="dist"
name="${mac.app.name}"
displayname="Java Learning Machine"
identifier="jlm.core.ui.JavaLearningMachine"
mainclassname="jlm.core.ui.JavaLearningMachine"
icon="${mac.dir}/JLM.icns">
<classpath file="dist/jlm-${jlm.version}.jar" />
</bundleapp>
<copy todir="${mac.bundle.dir}/Contents/Resources/fr.lproj">
<fileset dir="${fr.lproj.dir}"/>
</copy>
</target>
<target name="Mac.app" depends="dist, build-Mac.app-bundle">
</target>
-->
</project>