1<?xml version="1.0" ?> 2 3<project name="FigTree" default="dist" basedir="."> 4 <description> 5 Build file for FigTree 6 $Id:$ 7 </description> 8 9 <!-- set global properties for this build --> 10 <property name="src" location="src"/> 11 <property name="build" location="build"/> 12 13 <property name="lib" location="lib"/> 14 <property name="dist" location="dist"/> 15 <property name="packaging_tools" value="packaging_tools" /> 16 17 <property environment="env"/> 18 19 <target name="clean"> 20 <mkdir dir="${build}"/> 21 <delete includeEmptyDirs="true"> 22 <fileset dir="${build}" includes="**/*"/> 23 </delete> 24 25 </target> 26 27 <target name="init"> 28 <!-- Create the time stamp --> 29 <tstamp/> 30 <!-- Create the build directory structure used by compile --> 31 <mkdir dir="${build}"/> 32 <mkdir dir="${dist}"/> 33 <mkdir dir="${lib}"/> 34 </target> 35 36 <target name="compile" depends="init"> 37 <!-- Compile the java code from ${src} into ${build} --> 38 <javac source="1.6" target="1.6" srcdir="${src}" destdir="${build}" 39 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"> 40 <include name="figtree/**"/> 41 </javac> 42 <copy todir="${build}" verbose="true"> 43 <fileset dir="${src}" includes="figtree/**/*.png,figtree/**/*.gif"/> 44 </copy> 45 </target> 46 47 <target name="dist" depends="compile" description="generate the distribution"> 48 <!-- Create the distribution directory --> 49 <mkdir dir="${dist}"/> 50 51 <jar jarfile="${dist}/figtree.jar"> 52 <zipgroupfileset dir="${lib}" includes="jebl.jar"/> 53 <zipgroupfileset dir="${lib}" includes="jam.jar"/> 54 <zipgroupfileset dir="${lib}" includes="batik*.jar"/> 55 <zipgroupfileset dir="${lib}" includes="xml-apis.jar"/> 56 <zipgroupfileset dir="${lib}" includes="iText.jar"/> 57 <fileset dir="${build}" includes="**/*.class,**/*.properties,**/*.png,**/*.gif"/> 58 <manifest> 59 <attribute name="Built-By" value="${user.name}"/> 60 <attribute name="Main-Class" value="figtree.application.FigTreeApplication"/> 61 </manifest> 62 </jar> 63 64 <jar jarfile="${dist}/figtreepanel.jar"> 65 <fileset dir="${build}" 66 includes="figtree/panel/**/*.class,figtree/treeviewer/**/*.class,**/*.properties,**/*.png,**/*.gif" 67 /> 68 69 <manifest> 70 <attribute name="Built-By" value="${user.name}"/> 71 </manifest> 72 </jar> 73 74 <jar jarfile="${dist}/figtree-pdf.jar"> 75 <fileset dir="${build}" 76 includes="figtree/panel/**/*.class,figtree/treeviewer/**/*.class,**/*.properties,**/*.png,**/*.gif" 77 /> 78 79 <manifest> 80 <attribute name="Built-By" value="${user.name}"/> 81 </manifest> 82 </jar> 83 84 85 <war destfile="${dist}/figtree.war" 86 webxml="WebRoot/WEB-INF/web.xml"> 87 <fileset dir="WebRoot"/> 88 <lib dir="${lib}/jwt"> 89 <include name="commons-fileupload-1.2.1.jar" /> 90 <include name="commons-io-1.4.jar" /> 91 <include name="jwt-3.1.6.jar" /> 92 </lib> 93 <lib dir="${lib}"> 94 <include name="iText.jar" /> 95 <include name="jam.jar" /> 96 <include name="jdom.jar" /> 97 <include name="jebl.jar" /> 98 </lib> 99 <classes dir="${build}"/> 100 </war> 101 102 103 </target> 104 105 <property name="version" value="1.4.4" /> 106 <property name="version_number" value="1.4.4" /> 107 <property name="release_dir" value="release" /> 108 <property name="name" value="FigTree" /> 109 110 <property name="common_dir" value="${release_dir}/common" /> 111 112 <property name="Mac_dir" value="${release_dir}/Mac" /> 113 <property name="Linux_dir" value="${release_dir}/Linux" /> 114 <property name="Windows_dir" value="${release_dir}/Windows" /> 115 116 <property name="Mac_package_dir" value="${Mac_dir}/${name} v${version}" /> 117 <property name="Linux_package_dir" value="${Linux_dir}/${name}_v${version}" /> 118 <property name="Windows_package_dir" value="${Windows_dir}/${name} v${version}" /> 119 120 <!-- Need to either install Launch4j under {BEAST workspace}/${release} 121 or install it in the default directory and change the location of launch4j.dir --> 122 <target name="windows_Release" depends="dist" 123 description="release Windows version of FigTree"> 124 125 <delete dir="${Windows_package_dir}" /> 126 <!-- Create the release directory --> 127 <mkdir dir="${Windows_package_dir}" /> 128 129 <property name="launch4j.dir" location="${packaging_tools}/windows/launch4j" /> 130 <taskdef name="launch4j" classname="net.sf.launch4j.ant.Launch4jTask" 131 classpath="${launch4j.dir}/launch4j.jar :${launch4j.dir}/lib/xstream.jar"/> 132 133 <copy file="${dist}/figtree.jar" todir="${Windows_package_dir}/lib"/> 134 <copy todir="${Windows_package_dir}/lib"> 135 <fileset dir="${Windows_dir}/lib"/> 136 </copy> 137 138 <copy todir="${Windows_package_dir}"> 139 <fileset dir="${common_dir}/"/> 140 </copy> 141 142 <launch4j configFile="${Windows_dir}/FigTree_launch4j.xml" 143 outfile="${Windows_package_dir}/${name} v${version}.exe" 144 fileVersion="${version_number}.0" 145 txtFileVersion="${version}" 146 productVersion="${version_number}.0" 147 txtProductVersion="${version}"/> 148 149 <zip destfile="${release_dir}/${name} v${version}.zip"> 150 <zipfileset dir="${Windows_package_dir}" prefix="${name} v${version}"/> 151 </zip> 152 153 <echo message="Windows version release is finished." /> 154 </target> 155 156 <target name="linux_unix_Release" depends="dist" 157 description="release Linux/Unix version of FigTree"> 158 <delete dir="${Linux_package_dir}" /> 159 <!-- Create the release directory --> 160 <mkdir dir="${Linux_package_dir}" /> 161 162 <copy todir="${Linux_package_dir}/bin"> 163 <fileset dir="${Linux_dir}/scripts"/> 164 </copy> 165 166 <copy file="${Linux_dir}/icons/figtree.png" todir="${Linux_package_dir}/images"/> 167 <copy file="${dist}/figtree.jar" todir="${Linux_package_dir}/lib"/> 168 <!-- 169 <copy todir="${Linux_package_dir}/lib"> 170 <fileset dir="${Linux_dir}/lib"/> 171 </copy> 172 --> 173 <copy todir="${Linux_package_dir}"> 174 <fileset dir="${common_dir}/"/> 175 </copy> 176 177 <tar destfile="${release_dir}/${name}_v${version}.tgz" compression="gzip"> 178 <tarfileset dir="${Linux_package_dir}" prefix="${name}_v${version}"/> 179 </tar> 180 181 <echo message="Linux/Unix version release is finished." /> 182 </target> 183 184 <property name="AppleSigner" value="Developer ID Application: Andrew Rambaut (9E4WXAQ6SE)" /> 185 186 <target name="mac_release" depends="dist" 187 description="release Mac version of FigTree"> 188 <delete dir="${Mac_package_dir}" /> 189 <!-- Create the release directory --> 190 <mkdir dir="${Mac_package_dir}" /> 191 192 <copy file="${dist}/figtree.jar" todir="${Mac_package_dir}/lib"/> 193 <copy file="${dist}/figtree-pdf.jar" todir="${Mac_package_dir}/QuickLook Plugin/FigTreeQuickLookPlugin.qlgenerator/Contents/Resources"/> 194 <copy todir="${Mac_package_dir}"> 195 <fileset dir="${common_dir}/"/> 196 </copy> 197 <copy todir="${Mac_package_dir}/QuickLook Plugin"> 198 <fileset dir="${Mac_dir}/QuickLook Plugin"/> 199 </copy> 200 201 <taskdef name="jarbundler" classname="com.ultramixer.jarbundler.JarBundler"/> 202 203 <!-- create a jar bundle for the mac --> 204 <jarbundler dir="${Mac_package_dir}" 205 name="${name} v${version}" 206 mainclass="figtree.application.FigTreeApplication" 207 icon="${Mac_dir}/icons/FigTree.icns" 208 stubfile="${packaging_tools}/mac/universalJavaApplicationStub" 209 useJavaXKey="true" 210 jvmversion="1.6+" 211 vmoptions="-Xmx4096M" 212 highresolutioncapable="true" 213 arguments="" 214 version="${version}" 215 build="1" 216 copyright="${name} v${version}, Copyright 2006-2018, Andrew Rambaut" 217 bundleid="figtree" > 218 <javaproperty name="apple.laf.useScreenMenuBar" value="true"/> 219 <jarfileset dir="${dist}"> 220 <include name="**/figtree.jar"/> 221 </jarfileset> 222 <jarfileset dir="${Mac_dir}/lib"> 223 <include name="**/quaqua.jar"/> 224 </jarfileset> 225 <jarfileset dir="${Mac_dir}/lib"> 226 <include name="libquaqua*.jnilib"/> 227 </jarfileset> 228 <documenttype name="FigTree tree file" 229 extensions="tree tre trees ntf tf" 230 iconFile="${Mac_dir}/icons/FigTreeDocIcon.icns" 231 role="Editor"/> 232 </jarbundler> 233 234 <!-- code signing --> 235 <exec executable="codesign"> 236 <arg value="--deep"/> 237 <arg value="-s"/> 238 <arg value="${AppleSigner}"/> 239 <arg value="-v"/> 240 <arg value="${Mac_package_dir}/${name} v${version}.app"/> 241 </exec> 242 243 <!-- checking code signing --> 244 <exec executable="spctl"> 245 <arg value="--assess"/> 246 <arg value="--verbose=4"/> 247 <arg value="${Mac_package_dir}/${name} v${version}.app"/> 248 </exec> 249 250 <!-- create disk image --> 251 <exec executable="/usr/bin/hdiutil"> 252 <arg value="create"/> 253 <arg value="-ov"/> 254 <arg value="-srcfolder"/> 255 <arg value="${Mac_package_dir}"/> 256 <arg value="-volname"/> 257 <arg value="${name} v${version}"/> 258 <arg value="-imagekey"/> 259 <arg value="zlib-level=6"/> 260 <arg value="${release_dir}/${name} v${version}.dmg"/> 261 </exec> 262 263 <exec executable="codesign"> 264 <arg value="-s"/> 265 <arg value="${AppleSigner}"/> 266 <arg value="-v"/> 267 <arg value="${release_dir}/${name} v${version}.dmg"/> 268 </exec> 269 270 <echo message="Mac version release is finished." /> 271 </target> 272 273 <!-- 274 <taskdef name="bundleapp" 275 classname="com.oracle.appbundler.AppBundlerTask" 276 classpath="release/Mac/appbundler-1.0.jar" 277 /> 278 279 <property environment="env" /> 280 281 <target name="mac_release" 282 description="release Mac version of FigTree for Mountain Lion"> 283 <delete dir="${Mac_package_dir}" /> 284 285 <mkdir dir="${Mac_package_dir}" /> 286 287 <copy file="${dist}/figtree.jar" todir="${Mac_package_dir}/lib"/> 288 <copy file="${dist}/figtree-pdf.jar" todir="${Mac_package_dir}/QuickLook Plugin/FigTreeQuickLookPlugin.qlgenerator/Contents/Resources"/> 289 <copy todir="${Mac_package_dir}"> 290 <fileset dir="${common_dir}/"/> 291 </copy> 292 <copy todir="${Mac_package_dir}/QuickLook Plugin"> 293 <fileset dir="${Mac_dir}/QuickLook Plugin"/> 294 </copy> 295 296 <bundleapp 297 outputdirectory="${Mac_package_dir}" 298 name="${name} v${version}" 299 displayname="${name} v${version}" 300 identifier="uk.ac.ed.bio.figtree" 301 shortversion="1.4.1" 302 copyright="${name} v${version}, Copyright 2006-2013, Andrew Rambaut" 303 applicationCategory="public.app-category.medical" 304 mainclassname="figtree/application/FigTreeApplication" 305 icon="${Mac_dir}/icons/FigTree.icns" 306 > 307 <runtime dir="${env.JAVA_HOME}"/> 308 <classpath file="./dist/figtree.jar"/> 309 <classpath file="./release/Mac/lib/quaqua.jar"/> 310 <option value="-Dapple.laf.useScreenMenuBar=true"/> 311 <option value="-Xmx1024M"/> 312 </bundleapp> 313 314 <echo message="Bundle is created." /> 315 316 <copy verbose="true" overwrite="true" file="${Mac_dir}/lib/Info.plist" todir="${Mac_package_dir}/${name} v${version}.app"/> 317 318 <echo message="Mac version release is finished." /> 319 </target> 320 --> 321</project> 322