Codebase list figtree / HEAD build.xml
HEAD

Tree @HEAD (Download .tar.gz)

build.xml @HEADraw · history · blame

<?xml version="1.0" ?>

<project name="FigTree" default="dist" basedir=".">
    <description>
        Build file for FigTree
        $Id:$
    </description>

    <!-- set global properties for this build -->
    <property name="src" location="src"/>
    <property name="build" location="build"/>

    <property name="lib" location="lib"/>
    <property name="dist" location="dist"/>
    <property name="packaging_tools" value="packaging_tools" />

    <property environment="env"/>

    <target name="clean">
        <mkdir dir="${build}"/>
        <delete includeEmptyDirs="true">
            <fileset dir="${build}" includes="**/*"/>
        </delete>

    </target>

    <target name="init">
        <!-- Create the time stamp -->
        <tstamp/>
        <!-- Create the build directory structure used by compile -->
        <mkdir dir="${build}"/>
        <mkdir dir="${dist}"/>
        <mkdir dir="${lib}"/>
    </target>

    <target name="compile" depends="init">
        <!-- Compile the java code from ${src} into ${build} -->
        <javac source="1.6" target="1.6" srcdir="${src}" destdir="${build}"
               classpath="${lib}/jebl.jar:${lib}/jam.jar:${lib}/batik-awt-util.jar:${lib}/batik-dom.jar:${lib}/batik-ext.jar:${lib}/batik-svggen.jar:${lib}/batik-util.jar:${lib}/batik-xml.jar:${lib}/xml-apis.jar:${lib}/iText.jar:${lib}/quaqua.jar:${lib}/jwt/servlet-api-2.5-6.0.2.jar:${lib}/jwt/jwt-3.1.7pre1.jar">
            <include name="figtree/**"/>
        </javac>
        <copy todir="${build}" verbose="true">
            <fileset dir="${src}" includes="figtree/**/*.png,figtree/**/*.gif"/>
        </copy>
    </target>

    <target name="dist" depends="compile" description="generate the distribution">
        <!-- Create the distribution directory -->
        <mkdir dir="${dist}"/>

        <jar jarfile="${dist}/figtree.jar">
            <zipgroupfileset dir="${lib}" includes="jebl.jar"/>
            <zipgroupfileset dir="${lib}" includes="jam.jar"/>
            <zipgroupfileset dir="${lib}" includes="batik*.jar"/>
            <zipgroupfileset dir="${lib}" includes="xml-apis.jar"/>
            <zipgroupfileset dir="${lib}" includes="iText.jar"/>
            <fileset dir="${build}" includes="**/*.class,**/*.properties,**/*.png,**/*.gif"/>
            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
                <attribute name="Main-Class" value="figtree.application.FigTreeApplication"/>
            </manifest>
        </jar>

        <jar jarfile="${dist}/figtreepanel.jar">
            <fileset dir="${build}"
                     includes="figtree/panel/**/*.class,figtree/treeviewer/**/*.class,**/*.properties,**/*.png,**/*.gif"
                    />

            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
            </manifest>
        </jar>

        <jar jarfile="${dist}/figtree-pdf.jar">
            <fileset dir="${build}"
                     includes="figtree/panel/**/*.class,figtree/treeviewer/**/*.class,**/*.properties,**/*.png,**/*.gif"
                    />

            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
            </manifest>
        </jar>


        <war destfile="${dist}/figtree.war"
             webxml="WebRoot/WEB-INF/web.xml">
            <fileset dir="WebRoot"/>
            <lib dir="${lib}/jwt">
                <include name="commons-fileupload-1.2.1.jar" />
                <include name="commons-io-1.4.jar" />
                <include name="jwt-3.1.6.jar" />
            </lib>
            <lib dir="${lib}">
                <include name="iText.jar" />
                <include name="jam.jar" />
                <include name="jdom.jar" />
                <include name="jebl.jar" />
            </lib>
            <classes dir="${build}"/>
        </war>


    </target>

    <property name="version" value="1.4.4" />
    <property name="version_number" value="1.4.4" />
    <property name="release_dir" value="release" />
    <property name="name" value="FigTree" />

    <property name="common_dir" value="${release_dir}/common" />

    <property name="Mac_dir" value="${release_dir}/Mac" />
    <property name="Linux_dir" value="${release_dir}/Linux" />
    <property name="Windows_dir" value="${release_dir}/Windows" />

    <property name="Mac_package_dir" value="${Mac_dir}/${name} v${version}" />
    <property name="Linux_package_dir" value="${Linux_dir}/${name}_v${version}" />
    <property name="Windows_package_dir" value="${Windows_dir}/${name} v${version}" />

    <!-- Need to either install Launch4j under {BEAST workspace}/${release}
                 or install it in the default directory and change the location of launch4j.dir -->
    <target name="windows_Release" depends="dist"
            description="release Windows version of FigTree">

        <delete dir="${Windows_package_dir}" />
        <!-- Create the release directory -->
        <mkdir dir="${Windows_package_dir}" />

        <property name="launch4j.dir" location="${packaging_tools}/windows/launch4j" />
        <taskdef name="launch4j" classname="net.sf.launch4j.ant.Launch4jTask"
                 classpath="${launch4j.dir}/launch4j.jar :${launch4j.dir}/lib/xstream.jar"/>

        <copy file="${dist}/figtree.jar" todir="${Windows_package_dir}/lib"/>
        <copy todir="${Windows_package_dir}/lib">
            <fileset dir="${Windows_dir}/lib"/>
        </copy>

        <copy todir="${Windows_package_dir}">
            <fileset dir="${common_dir}/"/>
        </copy>

        <launch4j configFile="${Windows_dir}/FigTree_launch4j.xml"
                  outfile="${Windows_package_dir}/${name} v${version}.exe"
                  fileVersion="${version_number}.0"
                  txtFileVersion="${version}"
                  productVersion="${version_number}.0"
                  txtProductVersion="${version}"/>

        <zip destfile="${release_dir}/${name} v${version}.zip">
            <zipfileset dir="${Windows_package_dir}" prefix="${name} v${version}"/>
        </zip>

        <echo message="Windows version release is finished." />
    </target>

    <target name="linux_unix_Release" depends="dist"
            description="release Linux/Unix version of FigTree">
        <delete dir="${Linux_package_dir}" />
        <!-- Create the release directory -->
        <mkdir dir="${Linux_package_dir}" />

        <copy todir="${Linux_package_dir}/bin">
            <fileset dir="${Linux_dir}/scripts"/>
        </copy>

        <copy file="${Linux_dir}/icons/figtree.png" todir="${Linux_package_dir}/images"/>
        <copy file="${dist}/figtree.jar" todir="${Linux_package_dir}/lib"/>
        <!--
        <copy todir="${Linux_package_dir}/lib">
            <fileset dir="${Linux_dir}/lib"/>
        </copy>
        -->
        <copy todir="${Linux_package_dir}">
            <fileset dir="${common_dir}/"/>
        </copy>

        <tar destfile="${release_dir}/${name}_v${version}.tgz" compression="gzip">
            <tarfileset dir="${Linux_package_dir}" prefix="${name}_v${version}"/>
        </tar>

        <echo message="Linux/Unix version release is finished." />
    </target>

    <property name="AppleSigner" value="Developer ID Application: Andrew Rambaut (9E4WXAQ6SE)" />

    <target name="mac_release" depends="dist"
            description="release Mac version of FigTree">
        <delete dir="${Mac_package_dir}" />
        <!-- Create the release directory -->
        <mkdir dir="${Mac_package_dir}" />

        <copy file="${dist}/figtree.jar" todir="${Mac_package_dir}/lib"/>
        <copy file="${dist}/figtree-pdf.jar" todir="${Mac_package_dir}/QuickLook Plugin/FigTreeQuickLookPlugin.qlgenerator/Contents/Resources"/>
        <copy todir="${Mac_package_dir}">
            <fileset dir="${common_dir}/"/>
        </copy>
        <copy todir="${Mac_package_dir}/QuickLook Plugin">
            <fileset dir="${Mac_dir}/QuickLook Plugin"/>
        </copy>

        <taskdef name="jarbundler" classname="com.ultramixer.jarbundler.JarBundler"/>

        <!-- create a jar bundle for the mac -->
        <jarbundler dir="${Mac_package_dir}"
                    name="${name} v${version}"
                    mainclass="figtree.application.FigTreeApplication"
                    icon="${Mac_dir}/icons/FigTree.icns"
                    stubfile="${packaging_tools}/mac/universalJavaApplicationStub"
					useJavaXKey="true"
                    jvmversion="1.6+"
                    vmoptions="-Xmx4096M"
                    highresolutioncapable="true"
                    arguments=""
                    version="${version}"
                    build="1"
                    copyright="${name} v${version}, Copyright 2006-2018, Andrew Rambaut"
                    bundleid="figtree" >
            <javaproperty name="apple.laf.useScreenMenuBar" value="true"/>
            <jarfileset dir="${dist}">
                <include name="**/figtree.jar"/>
            </jarfileset>
            <jarfileset dir="${Mac_dir}/lib">
                <include name="**/quaqua.jar"/>
            </jarfileset>
            <jarfileset dir="${Mac_dir}/lib">
                <include name="libquaqua*.jnilib"/>
            </jarfileset>
            <documenttype name="FigTree tree file"
                          extensions="tree tre trees ntf tf"
                          iconFile="${Mac_dir}/icons/FigTreeDocIcon.icns"
                          role="Editor"/>
        </jarbundler>

        <!-- code signing -->
        <exec executable="codesign">
            <arg value="--deep"/>
            <arg value="-s"/>
            <arg value="${AppleSigner}"/>
            <arg value="-v"/>
            <arg value="${Mac_package_dir}/${name} v${version}.app"/>
        </exec>

        <!-- checking code signing -->
        <exec executable="spctl">
            <arg value="--assess"/>
            <arg value="--verbose=4"/>
            <arg value="${Mac_package_dir}/${name} v${version}.app"/>
        </exec>

        <!-- create disk image -->
        <exec executable="/usr/bin/hdiutil">
            <arg value="create"/>
            <arg value="-ov"/>
            <arg value="-srcfolder"/>
            <arg value="${Mac_package_dir}"/>
            <arg value="-volname"/>
            <arg value="${name} v${version}"/>
            <arg value="-imagekey"/>
            <arg value="zlib-level=6"/>
            <arg value="${release_dir}/${name} v${version}.dmg"/>
        </exec>

        <exec executable="codesign">
            <arg value="-s"/>
            <arg value="${AppleSigner}"/>
            <arg value="-v"/>
            <arg value="${release_dir}/${name} v${version}.dmg"/>
        </exec>

        <echo message="Mac version release is finished." />
    </target>

    <!--
    <taskdef name="bundleapp"
             classname="com.oracle.appbundler.AppBundlerTask"
             classpath="release/Mac/appbundler-1.0.jar"
            />

    <property environment="env" />

    <target name="mac_release"
            description="release Mac version of FigTree for Mountain Lion">
        <delete dir="${Mac_package_dir}" />

        <mkdir dir="${Mac_package_dir}" />

        <copy file="${dist}/figtree.jar" todir="${Mac_package_dir}/lib"/>
        <copy file="${dist}/figtree-pdf.jar" todir="${Mac_package_dir}/QuickLook Plugin/FigTreeQuickLookPlugin.qlgenerator/Contents/Resources"/>
        <copy todir="${Mac_package_dir}">
            <fileset dir="${common_dir}/"/>
        </copy>
        <copy todir="${Mac_package_dir}/QuickLook Plugin">
            <fileset dir="${Mac_dir}/QuickLook Plugin"/>
        </copy>

        <bundleapp
                outputdirectory="${Mac_package_dir}"
                name="${name} v${version}"
                displayname="${name} v${version}"
                identifier="uk.ac.ed.bio.figtree"
                shortversion="1.4.1"
                copyright="${name} v${version}, Copyright 2006-2013, Andrew Rambaut"
                applicationCategory="public.app-category.medical"
                mainclassname="figtree/application/FigTreeApplication"
                icon="${Mac_dir}/icons/FigTree.icns"
                >
            <runtime dir="${env.JAVA_HOME}"/>
            <classpath file="./dist/figtree.jar"/>
            <classpath file="./release/Mac/lib/quaqua.jar"/>
            <option value="-Dapple.laf.useScreenMenuBar=true"/>
            <option value="-Xmx1024M"/>
        </bundleapp>

        <echo message="Bundle is created." />

        <copy verbose="true" overwrite="true" file="${Mac_dir}/lib/Info.plist" todir="${Mac_package_dir}/${name} v${version}.app"/>

        <echo message="Mac version release is finished." />
    </target>
            -->
</project>