<project name="jalviewX" default="usage" basedir="."
xmlns:if="ant:if"
xmlns:unless="ant:unless">
+ <taskdef classpath="${clover.jar}" resource="cloverlib.xml" if:set="clover.jar"/>
+ <clover-env if:set="clover.jar"/>
+
<target name="help" depends="usage" />
<target name="usage" depends="init">
<echo message="~~~Jalview Ant build.xml Usage~~~~" />
<echo message="See docs/building.html and the comments in build file for other targets." />
<echo message="note: compile and makeApplet optionally compile/obfuscate applet against a different Java version by specifying -Djava118.home=PathtoJDK/lib which is the lib directory in the JDK install that contains rt.jar " />
<echo message="Useful -D flags: -Ddonotobfuscate will prevent applet obfuscation" />
+ <echo message="Useful -D flags: -Dclover.jar to specify path to openclover for testng coverage report" />
</target>
<property name="docDir" value="doc" />
<property name="sourceDir" value="src" />
<property name="schemaDir" value="schemas" />
- <property name="outputDir" value="classes" />
+ <property name="outputDir" value="classes" unless:set="clover.jar"/>
+ <property name="outputDir" value="cloverclasses" if:set="clover.jar"/>
<property name="packageDir" value="dist" />
<property name="outputJar" value="jalview.jar" />
<!-- Jalview Applet JMol Jar Dependency -->
<property name="reportDir" value="test-reports" />
<property name="testDir" value="test" />
<property name="testOutputDir" value="tests" />
+ <property name="cloverOutputDir" value="clover" if:set="clover.jar" />
<!-- switch to indicate if we should obfuscate jalviewLite -->
<!-- <property name="donotobfuscate" value="true"/> -->
<!-- switch to exclude associations from generated jnlp files -->
<include name="**/*.*" />
</fileset>
</copy>
+ <mkdir dir="${cloverOutputDir}" if:set="clover.jar"/>
</target>
<target name="build" depends="prepare">
<target name="testng" depends="buildTests">
<testng outputDir="${reportDir}" haltOnFailure="false" groups="${testng-groups}" mode="testng"
- verbose="2">
+ verbose="10">
<classpath>
<pathelement location="${testOutputDir}" />
+ <pathelement location="${clover.jar}" if:set="clover.jar"/>
<path refid="test.classpath" />
</classpath>
<jvmarg value="--add-modules=java.se.ee" if:set="java9"/>
</jar>
<antcall target="writejnlpf">
- <param name="jnlpFile" value="${packageDir}/jalview.jnlp" />
+ <param name="jnlpFile" value="${packageDir}/jalview_256M.jnlp" />
<param name="inih" value="10M" />
<param name="maxh" value="256M" />
</antcall>
+ <antcall target="writejnlpf">
+ <param name="jnlpFile" value="${packageDir}/jalview.jnlp" />
+ <param name="inih" value="800M" />
+ <param name="maxh" value="1024M" />
+ </antcall>
<antcall target="writejnlpf">
<param name="jnlpFile" value="${packageDir}/jalview_1G.jnlp" />
<antcall target="writejnlpf">
<param name="jnlpFile" value="${packageDir}/jalview_2G.jnlp" />
- <param name="inih" value="256M" />
+ <param name="inih" value="800M" />
<param name="maxh" value="1024M" />
</antcall>
<association mime-type="application-x/ext-file" extensions="jar"/>-->
</target>
- <target name="-jarsignwithtsa" depends="makedist,preparejnlp" if="timestamp">
+ <target name="-jarsignwithtsa" depends="makedist,preparejnlp" if="timestamp" unless="nosign">
<signjar storepass="${jalview.keystore.pass}" keypass="${jalview.key.pass}" keystore="${jalview.keystore}" alias="${jalview.key}" lazy="false" verbose="false" sigalg="${jalview.keyalg}" digestalg="${jalview.keydig}"
tsaproxyhost="${proxyHost}" tsaproxyport="${proxyPort}" tsaurl="${jalview.tsaurl}">
<fileset dir="${packageDir}">
</fileset>
</signjar>
</target>
- <target name="-jarsignnotsa" depends="makedist,preparejnlp" unless="timestamp">
+ <target name="-jarsignnotsa" depends="makedist,preparejnlp" if:blank="timestamp" unless="nosign">
<signjar storepass="${jalview.keystore.pass}" keypass="${jalview.key.pass}" keystore="${jalview.keystore}" alias="${jalview.key}" lazy="false" verbose="false" sigalg="${jalview.keyalg}" digestalg="${jalview.keydig}">
<fileset dir="${packageDir}">
<include name="*.jar" />
</target>
<target name="makedist" depends="build, buildPropertiesFile, linkcheck, buildindices">
+ <fail if="clover.jar">
+ Ignoring request to build jalview distribution with clover-instrumented classes
+ </fail>
<!-- make the package jar if not already existing -->
<mkdir dir="${packageDir}" />
<!-- clean dir if it already existed -->
<delete file="in.jar" />
</target>
-<target name="castorbinding" depends="init" description="Generate Java bindings to supported Jalview XML models.">
- <taskdef name="castor-srcgen" classname="org.castor.anttask.CastorCodeGenTask" classpathref="build.classpath" />
+<target name="jaxb-bindings" depends="init" description="Generates JAXB bindings for supported Jalview XML models (needs xjc on the path)">
<delete>
- <fileset dir="${sourceDir}/jalview/schemabinding/version2">
+ <fileset dir="${sourceDir}/jalview/xml/binding/jalview">
<include name="*.java" />
- <include name="descriptors/*.java" />
</fileset>
</delete>
- <castor-srcgen file="${schemaDir}/vamsas.xsd" todir="${sourceDir}" package="jalview.schemabinding.version2" warnings="false" nodesc="false" verbose="true" properties="${schemaDir}/jalview.properties" />
- <castor-srcgen file="${schemaDir}/JalviewUserColours.xsd" todir="${sourceDir}" package="jalview.schemabinding.version2" warnings="false" nodesc="false" verbose="true" properties="${schemaDir}/jalview.properties" />
- <castor-srcgen file="${schemaDir}/JalviewWsParamSet.xsd" todir="${sourceDir}" package="jalview.schemabinding.version2" warnings="false" nodesc="false" verbose="true" properties="${schemaDir}/jalview.properties" />
- <castor-srcgen file="${schemaDir}/jalview.xsd" todir="${sourceDir}" package="jalview.schemabinding.version2" warnings="false" nodesc="false" verbose="true" properties="${schemaDir}/jalview.properties" />
- <!--
- now build the jalview.binding package with the old schema set
- -->
+ <exec executable="xjc">
+ <arg value="${schemaDir}/jalview.xsd"/>
+ <arg value="-d"/>
+ <arg value="${sourceDir}"/>
+ <arg value="-p"/>
+ <arg value="jalview.xml.binding.jalview"/>
+ </exec>
<delete>
- <fileset dir="${sourceDir}/jalview/binding/">
- <include name="**" />
+ <fileset dir="${sourceDir}/jalview/xml/binding/embl">
+ <include name="*.java" />
</fileset>
</delete>
- <castor-srcgen file="${schemaDir}/vamsasJvV1.xsd" todir="${sourceDir}" package="jalview.binding" warnings="false" nodesc="true" verbose="true" properties="${schemaDir}/jalview.nodesc.properties" />
- <castor-srcgen file="${schemaDir}/JalviewUserColours.xsd" todir="${sourceDir}" package="jalview.binding" warnings="false" nodesc="true" verbose="true" properties="${schemaDir}/jalview.nodesc.properties" />
- <castor-srcgen file="${schemaDir}/jalviewJvV1.xsd" todir="${sourceDir}" package="jalview.binding" warnings="false" nodesc="true" verbose="true" properties="${schemaDir}/jalview.nodesc.properties" />
+
+ <exec executable="xjc">
+ <arg value="${schemaDir}/embl.xsd"/>
+ <arg value="-d"/>
+ <arg value="${sourceDir}"/>
+ <arg value="-b"/>
+ <arg value="${schemaDir}/embl_bindings.xml"/>
+ <arg value="-p"/>
+ <arg value="jalview.xml.binding.embl"/>
+ </exec>
+
+ <delete>
+ <fileset dir="${sourceDir}/jalview/xml/binding/uniprot">
+ <include name="*.java" />
+ </fileset>
+ </delete>
+
+ <exec executable="xjc">
+ <arg value="${schemaDir}/uniprot.xsd"/>
+ <arg value="-d"/>
+ <arg value="${sourceDir}"/>
+ <arg value="-p"/>
+ <arg value="jalview.xml.binding.uniprot"/>
+ </exec>
</target>
+
<target name="sourcedist" description="create jalview source distribution" depends="init">
<delete file="${source.dist.name}" />
<!-- temporary copy of source to update timestamps -->
<include name="ap_${jsonSimple}" />
</fileset>
</target>
-<target name="-signappletnotsa" unless="timestamp" depends="-signapplet">
+<target name="-signappletnotsa" if:blank="timestamp" depends="-signapplet" unless="nosign">
<signjar storepass="${jalview.keystore.pass}" keypass="${jalview.key.pass}" keystore="${jalview.keystore}" alias="${jalview.key}" lazy="false" verbose="false">
<fileset refid="signappletjarset" />
</signjar>
</target>
-<target name="-signapplettsa" if="timestamp" depends="-signapplet">
+<target name="-signapplettsa" if="timestamp" depends="-signapplet" unless="nosign">
<signjar storepass="${jalview.keystore.pass}" keypass="${jalview.key.pass}" keystore="${jalview.keystore}" alias="${jalview.key}" lazy="false" verbose="false" tsaproxyhost="${proxyHost}" tsaproxyport="${proxyPort}" tsaurl="${jalview.tsaurl}">
<fileset refid="signappletjarset" />
</signjar>
</target>
<target name="signApplet" description="internal target to sign applet" depends="-signappletnotsa,-signapplettsa" />
+<target name="pubapplet" description="Dummy target to keep legacy Jalview build system happy. We don't actually publish the applet anymore."/>
-<target name="pubapplet" description="installs the jalviewLite applet and dependent jars into an applet examples directory built under ${outputDir}" depends="makeApplet, signApplet">
+<target name="_pubapplet" description="installs the jalviewLite applet and dependent jars into an applet examples directory built under ${outputDir}" depends="makeApplet, signApplet">
<!-- bizarre bug causes JmolApplet to always get signed, even if excluded from above. so copy explicitly -->
<copy file="appletlib/${jmolJar}" tofile="${packageDir}/examples/u_${jmolJar}" overwrite="true" />
<get url="${java2scriptURL}" dest="eclipse-inst/dropins/net.sf.j2s.core.jar" /> -->
</target>
-<target name="build-site" depends="init,prepare">
+
+<target name="build-site" depends="init,prepare,compile-site,unzip-to-site,make-j2s-cores">
+ <!-- tarball -->
+ <tar compression="gzip" destfile="site.tar.gz">
+ <tarfileset dir="site" />
+ </tar>
+</target>
+<target name="prepare-site" depends="init,prepare">
<property name="swingjsdir" value="swingjs"/>
<property name="eclipse-inst" value="/home/bamboo/buildtools/eclipse/eclipse-js"/>
<property name="eclipse-exec" value="${eclipse-inst}/eclipse"/>
<property name="eclipse-work" value="/home/bamboo/buildtools/eclipse/eclipse-js-workspace"/>
<!-- git repository linked to project in workspace -->
<property name="eclipse-workrepo" value="/home/bamboo/buildtools/eclipse/eclipse-js-workspace/jalview-js"/>
-
+</target>
+ <target name="clean-site" depends="prepare-site">
+ <delete dir="${eclipse-workrepo}/${site}"/>
+ <mkdir dir="${eclipse-workrepo}/${site}"/>
+ </target>
+<target name="compile-site" depends="prepare-site,clean-site">
<!-- update transpiler -->
<copy file="${swingjsdir}/net.sf.j2s.core.jar" todir="${eclipse-inst}/dropins" overwrite="true" failonerror="true"/>
<!-- update the git repo linked to the eclipse workspace -->
</exec>
<!-- update and checkout the same commit in the workspace project -->
<exec executable="/usr/bin/git" failifexecutionfails="true" dir="${eclipse-workrepo}">
- <arg value="pull" />
+ <arg value="reset" />
+ <arg value="--hard" />
</exec>
<exec executable="/usr/bin/git" failifexecutionfails="true" dir="${eclipse-workrepo}">
- <arg value="checkout" />
- <arg value="${git.commit}" />
+ <arg value="pull" />
+ </exec>
+ <exec executable="/usr/bin/git" failifexecutionfails="true" dir="${eclipse-workrepo}">
+ <arg value="checkout" />
+ <arg value="${git.commit}" />
</exec>
<!-- custom classpath for .js builds -->
<copy file=".classpath.js" tofile="${eclipse-workrepo}/.classpath" overwrite="true"/>
-
+ <!-- clean eclipse log -->
+ <delete file="${eclipse-work}/.metadata/.log"/>
+
<!-- execute the eclipse build - the build may fail but valid javascript may still be produced, so we ignore return codes -->
<exec executable="${eclipse-exec}" failonerror="no">
<arg value="-nosplash"/>
<arg value="-data"/>
<arg value="${eclipse-work}"/>
</exec>
-
+ <!-- report log -->
+ <exec executable="/bin/cat">
+ <arg value="${eclipse-work}/.metadata/.log"/>
+ </exec>
<!-- TODO: run jslint and something else here to check we have a complete set of .js files for java -->
<!-- possibly compare timestamps between .js files and their mate in source - any newer or not present triggers a new build -->
<!-- <mkdir dir="${packageDir}/${site}" /> -->
<!-- <property name="swingjs.zipurl" value="https://github.com/BobHanson/java2script/blob/master/sources/net.sf.j2s.java.core/dist/SwingJS-site.zip?raw=true" /> -->
-
+
<!-- and reset the .classpath -->
<exec executable="/usr/bin/git" failifexecutionfails="true" dir="${eclipse-workrepo}">
- <arg value="checkout" />
- <arg value="${git.commit}"/>
+ <arg value="checkout" />
+ <arg value="${git.commit}"/>
<arg value="--"/>
<arg value=".classpath" />
- </exec>
-
+ </exec>
+
<!-- finally copy artefacts from eclipse project checkout to the build site -->
<copy todir="${site}">
<fileset dir="${eclipse-workrepo}/site"/>
</copy>
-
- <property name="swingjs.zip" value="${swingjsdir}/SwingJS-site.zip" />
- <unzip src="${swingjs.zip}" dest="${site}/" overwrite="true"/>
- <copy todir="${site}/swingjs/j2s/">
- <fileset dir="${resourceDir}">
- <include name="**"/>
- </fileset>
- </copy>
-
- <copy todir="${site}/examples">
- <fileset dir="examples">
- <include name="*.*"/>
- </fileset>
- </copy>
- <!-- closure compile -->
- <!-- copy test files into place in site -->
</target>
+<target name="unzip-to-site" depends="prepare-site">
+ <ant antfile="build-site.xml"/>
+</target>
+
+ <target name="make-j2s-cores" depends="">
+ <ant antfile="buildcore.xml" target="build-all-cores"/>
+ </target>
</project>