2 <project name="jME" default="compile" basedir=".">
4 Ant Build File for the jME API.
7 <import file="build-import.xml"/>
9 <property name="class" location="${build}" />
10 <property name="jars" location="${release}" />
11 <property name="webstart" location="${seg}/jnlp" />
13 <property file="build.properties"/>
14 <!-- defaults for build.properties:-->
15 <property name="keyStore" value="jmeKeyStore"/>
16 <property name="storepass" value="..."/>
17 <property name="ftpuser" value="..."/>
18 <property name="ftppassword" value="..."/>
19 <property name="ftphost" value="ftp.jmonkeyengine.com"/>
20 <!-- end of defaults -->
23 <fileset dir="${libs}">
24 <include name="*.jar"/>
26 <pathelement path="${class}"/>
30 <echo message="${keyStore}"/>
31 <mkdir dir="${src}" />
32 <mkdir dir="${class}" />
33 <mkdir dir="${data}" />
34 <mkdir dir="${doc}" />
37 <!-- Compiles all the jME classes, including com.jmex.* -->
38 <target name="compile" depends="init" description="generate jme classes">
39 <mkdir dir="${class}" />
40 <mkdir dir="${class}/com" />
41 <copy todir="${class}/com">
42 <fileset dir="${src}/com">
43 <exclude name="**/*.java" />
46 <javac source="1.5" target="1.5"
49 classpathref="classpath"
52 memoryMaximumSize="256m"
56 <target name="run-testchooser" depends="compile-test" description="Runs the TestChooser">
57 <java classname="jmetest.TestChooser"
59 classpathref="classpath">
60 <jvmarg value="-Djava.library.path=${libs}"/>
64 <!-- Jar files for different parts of the jME API -->
66 <target name="dist-core" depends="compile" description="generate jme jar file">
67 <jar jarfile="${jars}/jme.jar" basedir="${class}" update="no" compress="true" includes="**/com/jme/**/*.class, **/com/jme/**/*.tga, **/com/jme/**/*.png, **/com/jme/**/*.glf" />
69 <target name="dist-audio" depends="compile" description="generate jme jar file (audio)">
70 <jar jarfile="${jars}/jme-audio.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/audio/**/*.class" />
72 <target name="dist-awt" depends="compile" description="generate jme jar file (awt)">
73 <jar jarfile="${jars}/jme-awt.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/awt/**/*.class" />
75 <target name="dist-editors" depends="compile" description="generate jme jar file (editors)">
76 <jar jarfile="${jars}/jme-editors.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/editors/**/*.class" />
78 <target name="dist-effects" depends="compile" description="generate jme jar file (effects)">
79 <jar jarfile="${jars}/jme-effects.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/effects/**/*.class, **/com/jmex/effects/**/data/*.*" />
81 <target name="dist-font" depends="compile" description="generate jme jar file (font)">
82 <jar jarfile="${jars}/jme-font.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/font2d/**/*.class,**/com/jmex/font3d/**/*.class" />
84 <target name="dist-gamestates" depends="compile" description="generate jme jar file (gamestates)">
85 <jar jarfile="${jars}/jme-gamestates.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/game/**/*.class" />
87 <target name="dist-model" depends="compile" description="generate jme jar file (model)">
88 <jar jarfile="${jars}/jme-model.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/model/**/*.class" excludes="**/com/jmex/model/collada/**"/>
90 <target name="dist-collada" depends="compile" description="generate jme jar file (collada)">
91 <jar jarfile="${jars}/jme-collada.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/model/collada/**/*.class"/>
93 <target name="dist-scene" depends="compile" description="generate jme jar file (scene)">
94 <jar jarfile="${jars}/jme-scene.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/scene/**/*.class" />
96 <target name="dist-sound" depends="compile" description="generate jme jar file (sound)">
97 <jar jarfile="${jars}/jme-sound.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/sound/**/*.class" />
99 <target name="dist-terrain" depends="compile" description="generate jme jar file (terrain)">
100 <jar jarfile="${jars}/jme-terrain.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/terrain/**/*.class" />
103 <!-- Creates all the jME jars -->
104 <target name="dist-all" depends="dist-core, dist-terrain, dist-audio, dist-awt, dist-effects, dist-model, dist-collada, dist-sound, dist-editors, dist-font, dist-gamestates, dist-scene" description="Generate all jar files" />
106 <target name="webdist-all" depends="dist-all" description="sign JARs for JNLP distribution">
107 <signjar jar="${jars}/jme.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
108 <signjar jar="${jars}/jme-awt.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
109 <signjar jar="${jars}/jme-audio.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
110 <signjar jar="${jars}/jme-editors.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
111 <signjar jar="${jars}/jme-effects.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
112 <signjar jar="${jars}/jme-font.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
113 <signjar jar="${jars}/jme-gamestates.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
114 <signjar jar="${jars}/jme-model.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
115 <signjar jar="${jars}/jme-collada.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
116 <signjar jar="${jars}/jme-scene.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
117 <signjar jar="${jars}/jme-sound.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
118 <signjar jar="${jars}/jme-terrain.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
121 <!-- Generats javadoc -->
122 <target name="doc" depends="compile" description="generate the javadoc documentation">
123 <javadoc destdir="${doc}" useExternalFile="yes" author="true" version="true" use="true"
124 package="yes" windowtitle="jME API"
126 <fileset dir="${src}/com">
127 <include name="**/*.java" />
128 <exclude name="**/jmex/model/collada/schema/**" />
129 <exclude name="**/jmex/model/collada/types/**" />
130 <exclude name="**/jmex/model/collada/xml/**" />
135 <!-- Removes all compiled files and documentation, but leaves any created jars -->
136 <target name="clean" description="clean up">
137 <delete dir="${class}" />
138 <delete dir="${doc}" />
140 <fileset dir="${src}" includes="**/*.class" />
141 <fileset dir="${release}" includes="jme*.jar"/>
142 <fileset dir="${webstart}" includes="*.jar"/>
146 <target name="rebuild" depends="clean" description="build from clean">
150 <!-- *** jmetest-related build targets -->
152 <target name="compile-test" depends="compile" description="generate jme test classes">
153 <javac source="1.5" target="1.5"
154 srcdir="${src}/jmetest"
156 classpathref="classpath"
158 memoryMaximumSize="256m"
160 <!-- copy the resources into the build directory -->
161 <copy todir="${class}/jmetest">
162 <fileset dir="${src}/jmetest">
163 <exclude name="**/*.java" />
168 <target name="dist-test" depends="compile-test" description="generate jme test class and data jars" >
169 <!-- Jar the demo classes -->
171 <pathconvert property="jarclasspathlibs" pathsep=" " dirsep="/">
173 <fileset dir="${libs}">
174 <include name="*.jar"/>
177 <mapper type="regexp" from=".*(lib.*)" to="\1"/>
179 <pathconvert property="jarclasspathrelease" pathsep=" " dirsep="/">
181 <fileset dir="${jars}">
182 <include name="*.jar"/>
183 <exclude name="jmetest.jar"/>
186 <mapper type="regexp" from=".*target.(.*)" to="\1"/>
188 <echo>${jarclasspathlibs} ${jarclasspathrelease}</echo>
190 <jar jarfile="${jars}/jmetest.jar"
192 excludes="**/jmetest/**/data/**,**/com/**"
195 <attribute name="Implementation-Title" value="${name}"/>
196 <attribute name="Implementation-Vendor" value="${vendor}"/>
197 <attribute name="Version" value="${major}.${minor}"/>
198 <attribute name="Class-Path" value="${jarclasspathlibs} ${jarclasspathrelease}"/>
199 <attribute name="Main-Class" value="${mainclass}"/>
203 <!-- Jar the demo data -->
204 <jar jarfile="${jars}/jmetest-data.jar"
206 includes="**/jmetest/**/data/**"
210 <target name="webdist-test" depends="dist-test" description="sign test jars for Webstart distribution" >
211 <signjar jar="${jars}/jmetest.jar"
213 keystore="${webstart}/${keyStore}"
214 storepass="${storepass}"
216 <signjar jar="${jars}/jmetest-data.jar"
218 keystore="${webstart}/${keyStore}"
219 storepass="${storepass}"
223 <!-- Jar and sign all the libraries required by jME -->
224 <target name="webdist-nativelibs" description="jar and sign native libraries for Webstart distribution" >
225 <!-- Jar and sign the Windows libraries -->
226 <jar jarfile="${webstart}/lwjgl-windows.jar"
231 <jar jarfile="${webstart}/openal-windows.jar"
233 includes="OpenAL32.dll"
236 <jar jarfile="${webstart}/jinput-windows.jar"
238 includes="jinput-dxplugin.dll"
241 <signjar jar="${webstart}/lwjgl-windows.jar"
243 keystore="${webstart}/${keyStore}"
244 storepass="${storepass}"
246 <signjar jar="${webstart}/openal-windows.jar"
248 keystore="${webstart}/${keyStore}"
249 storepass="${storepass}"
251 <signjar jar="${webstart}/jinput-windows.jar"
253 keystore="${webstart}/${keyStore}"
254 storepass="${storepass}"
257 <!-- Jar and sign Linux native libraries -->
258 <jar jarfile="${webstart}/lwjgl-linux.jar"
260 includes="liblwjgl.so"
263 <jar jarfile="${webstart}/openal-linux.jar"
265 includes="libopenal.so"
268 <jar jarfile="${webstart}/jinput-linux.jar"
270 includes="libjinput-linux.so"
273 <signjar jar="${webstart}/lwjgl-linux.jar"
275 keystore="${webstart}/${keyStore}"
276 storepass="${storepass}"
278 <signjar jar="${webstart}/openal-linux.jar"
280 keystore="${webstart}/${keyStore}"
281 storepass="${storepass}"
283 <signjar jar="${webstart}/jinput-linux.jar"
285 keystore="${webstart}/${keyStore}"
286 storepass="${storepass}"
289 <!-- Jar (eventually) and sign Mac native libraries -->
290 <jar jarfile="${webstart}/lwjgl-mac.jar"
292 includes="liblwjgl.jnilib"
295 <jar jarfile="${webstart}/openal-mac.jar"
297 includes="openal.dylib"
299 /><!--fix me: shouldn't it be a jnilib?-->
300 <jar jarfile="${webstart}/jinput-mac.jar"
302 includes="libjinput.jnilib"
306 <signjar jar="${webstart}/lwjgl-mac.jar"
308 keystore="${webstart}/${keyStore}"
309 storepass="${storepass}"
311 <signjar jar="${webstart}/openal-mac.jar"
313 keystore="${webstart}/${keyStore}"
314 storepass="${storepass}"
316 <signjar jar="${webstart}/jinput-mac.jar"
318 keystore="${webstart}/${keyStore}"
319 storepass="${storepass}"
322 <!-- Sign the lwjgl jar -->
323 <signjar jar="${seg}/lib/lwjgl.jar"
325 keystore="${webstart}/${keyStore}"
326 storepass="${storepass}"
329 <!-- Sign the lwjgl fmod3 jar -->
330 <signjar jar="${seg}/lib/lwjgl_fmod3.jar"
332 keystore="${webstart}/${keyStore}"
333 storepass="${storepass}"
337 <target name="nightly" depends="webdist-all, webdist-nativelibs, webdist-test">
338 <echo>${libs}/*.jar</echo>
339 <zip zipfile="${release}/jME.zip">
340 <zipfileset dir="${libs}" prefix="lib">
341 <include name="*.jar"/>
342 <include name="*.dll"/>
343 <include name="*.so"/>
344 <include name="*.*lib"/>
346 <fileset dir="${release}" >
347 <include name="*.jar"/>
350 <zip zipfile="${release}/src.zip">
351 <zipfileset dir="${src}" prefix="src">
352 <include name="**/*.*"/>
355 <!-- <mkdir dir="ftp"/>-->
356 <!-- <copy todir="ftp">-->
357 <ftp server="${ftphost}" userid="${ftpuser}" password="${ftppassword}" remotedir="nightly" >
358 <fileset dir="${webstart}" >
359 <include name="*.jar"/>
360 <include name="*.jnlp"/>
362 <fileset dir="${libs}" >
363 <include name="*.jar"/>
365 <fileset dir="${release}" >
366 <include name="*.jar"/>
367 <include name="jME.zip"/>
368 <include name="src.zip"/>