Codebase list plm / upstream/2.0+repack build.xml
upstream/2.0+repack

Tree @upstream/2.0+repack (Download .tar.gz)

build.xml @upstream/2.0+repackraw · history · blame

<?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>