1 <project name="jME" default="compile" basedir=".">
3 Ant Build File for the jME API.
6 <import file="build-import.xml"/>
8 <property name="class" location="${build}" />
9 <property name="jars" location="${release}" />
10 <property name="webstart" location="${seg}/jnlp" />
12 <property file="build.properties"/>
13 <!-- defaults for build.properties:-->
14 <property name="keyStore" value="jmeKeyStore"/>
15 <property name="storepass" value="..."/>
16 <property name="ftpuser" value="..."/>
17 <property name="ftppassword" value="..."/>
18 <property name="ftphost" value="ftp.jmonkeyengine.com"/>
19 <!-- end of defaults -->
22 <fileset dir="${libs}">
23 <include name="*.jar"/>
25 <pathelement path="${class}"/>
29 <echo message="${keyStore}"/>
30 <mkdir dir="${src}" />
31 <mkdir dir="${class}" />
32 <mkdir dir="${data}" />
33 <mkdir dir="${doc}" />
36 <!-- Compiles all the jME classes, including com.jmex.* -->
37 <target name="compile" depends="init" description="generate jme classes">
38 <mkdir dir="${class}" />
39 <mkdir dir="${class}/com" />
40 <copy todir="${class}/com">
41 <fileset dir="${src}/com">
42 <exclude name="**/*.java" />
45 <javac source="1.5" target="1.5"
48 classpathref="classpath"
51 memoryMaximumSize="256m"
55 <target name="run-testchooser" depends="compile-test" description="Runs the TestChooser">
56 <java classname="jmetest.TestChooser"
58 classpathref="classpath">
59 <jvmarg value="-Djava.library.path=${libs}"/>
63 <!-- Jar files for different parts of the jME API -->
65 <target name="dist-core" depends="compile" description="generate jme jar file">
66 <jar jarfile="${jars}/jme.jar" basedir="${class}" update="no" compress="false" includes="**/com/jme/**/*.class, **/com/jme/**/*.tga, **/com/jme/**/*.png, **/com/jme/**/*.glf" />
68 <target name="dist-awt" depends="compile" description="generate jme jar file (awt)">
69 <jar jarfile="${jars}/jme-awt.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/awt/**/*.class" />
71 <target name="dist-editors" depends="compile" description="generate jme jar file (editors)">
72 <jar jarfile="${jars}/jme-editors.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/editors/**/*.class" />
74 <target name="dist-effects" depends="compile" description="generate jme jar file (effects)">
75 <jar jarfile="${jars}/jme-effects.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/effects/**/*.class" />
77 <target name="dist-font" depends="compile" description="generate jme jar file (font)">
78 <jar jarfile="${jars}/jme-font.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/font2d/**/*.class,**/com/jmex/font3d/**/*.class" />
80 <target name="dist-gamestates" depends="compile" description="generate jme jar file (gamestates)">
81 <jar jarfile="${jars}/jme-gamestates.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/game/**/*.class" />
83 <target name="dist-model" depends="compile" description="generate jme jar file (model)">
84 <jar jarfile="${jars}/jme-model.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/model/**/*.class" />
86 <target name="dist-scene" depends="compile" description="generate jme jar file (scene)">
87 <jar jarfile="${jars}/jme-scene.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/scene/**/*.class" />
89 <target name="dist-sound" depends="compile" description="generate jme jar file (sound)">
90 <jar jarfile="${jars}/jme-sound.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/sound/**/*.class" />
92 <target name="dist-terrain" depends="compile" description="generate jme jar file (terrain)">
93 <jar jarfile="${jars}/jme-terrain.jar" basedir="${class}" update="no" compress="false" includes="**/com/jmex/terrain/**/*.class" />
96 <!-- Creates all the jME jars -->
97 <target name="dist-all" depends="dist-core, dist-terrain, dist-awt, dist-effects, dist-model, dist-sound, dist-editors, dist-font, dist-gamestates, dist-scene" description="Generate all jar files" />
99 <target name="webdist-all" depends="dist-all" description="sign JARs for JNLP distribution">
100 <signjar jar="${jars}/jme.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
101 <signjar jar="${jars}/jme-awt.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
102 <signjar jar="${jars}/jme-editors.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
103 <signjar jar="${jars}/jme-effects.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
104 <signjar jar="${jars}/jme-font.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
105 <signjar jar="${jars}/jme-gamestates.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
106 <signjar jar="${jars}/jme-model.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
107 <signjar jar="${jars}/jme-scene.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
108 <signjar jar="${jars}/jme-sound.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
109 <signjar jar="${jars}/jme-terrain.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
112 <!-- Generats javadoc -->
113 <target name="doc" depends="compile" description="generate the javadoc documentation">
114 <javadoc destdir="${doc}" useExternalFile="yes" author="true" version="true" use="true"
115 package="yes" windowtitle="jME API"
118 <fileset dir="${src}/com">
119 <include name="**/*.java" />
124 <!-- Removes all compiled files and documentation, but leaves any created jars -->
125 <target name="clean" description="clean up">
126 <delete dir="${class}" />
127 <delete dir="${doc}" />
129 <fileset dir="${src}" includes="**/*.class" />
130 <fileset dir="${release}" includes="jme*.jar"/>
131 <fileset dir="${webstart}" includes="*.jar"/>
135 <target name="rebuild" depends="clean" description="build from clean">
139 <!-- *** jmetest-related build targets -->
141 <target name="compile-test" depends="compile" description="generate jme test classes">
142 <javac source="1.5" target="1.5"
143 srcdir="${src}/jmetest"
145 classpathref="classpath"
147 memoryMaximumSize="256m"
149 <!-- copy the resources into the build directory -->
150 <copy todir="${class}/jmetest/data">
151 <fileset dir="${src}/jmetest/data"/>
155 <target name="dist-test" depends="compile-test" description="generate jme test class and data jars" >
156 <!-- Jar the demo classes -->
158 <pathconvert property="jarclasspathlibs" pathsep=" " dirsep="/">
160 <fileset dir="${libs}">
161 <include name="*.jar"/>
164 <mapper type="regexp" from=".*(lib.*)" to="\1"/>
166 <pathconvert property="jarclasspathrelease" pathsep=" " dirsep="/">
168 <fileset dir="${jars}">
169 <include name="*.jar"/>
170 <exclude name="jmetest.jar"/>
173 <mapper type="regexp" from=".*target.(.*)" to="\1"/>
175 <echo>${jarclasspathlibs} ${jarclasspathrelease}</echo>
177 <jar jarfile="${jars}/jmetest.jar"
179 excludes="**/jmetest/data/**,**/com/**"
182 <attribute name="Implementation-Title" value="${name}"/>
183 <attribute name="Implementation-Vendor" value="${vendor}"/>
184 <attribute name="Version" value="${major}.${minor}"/>
185 <attribute name="Class-Path" value="${jarclasspathlibs} ${jarclasspathrelease}"/>
186 <attribute name="Main-Class" value="${mainclass}"/>
190 <!-- Jar the demo data -->
191 <jar jarfile="${jars}/jmetest-data.jar"
193 includes="**/jmetest/data/**"
197 <target name="webdist-test" depends="dist-test" description="sign test jars for Webstart distribution" >
198 <signjar jar="${jars}/jmetest.jar"
200 keystore="${webstart}/${keyStore}"
201 storepass="${storepass}"
203 <signjar jar="${jars}/jmetest-data.jar"
205 keystore="${webstart}/${keyStore}"
206 storepass="${storepass}"
210 <!-- Jar and sign all the libraries required by jME -->
211 <target name="webdist-nativelibs" description="jar and sign native libraries for Webstart distribution" >
212 <!-- Jar and sign the Windows libraries -->
213 <jar jarfile="${webstart}/lwjgl-windows.jar"
218 <jar jarfile="${webstart}/openal-windows.jar"
220 includes="OpenAL32.dll"
223 <jar jarfile="${webstart}/jinput-windows.jar"
225 includes="jinput-dxplugin.dll"
228 <signjar jar="${webstart}/lwjgl-windows.jar"
230 keystore="${webstart}/${keyStore}"
231 storepass="${storepass}"
233 <signjar jar="${webstart}/openal-windows.jar"
235 keystore="${webstart}/${keyStore}"
236 storepass="${storepass}"
238 <signjar jar="${webstart}/jinput-windows.jar"
240 keystore="${webstart}/${keyStore}"
241 storepass="${storepass}"
244 <!-- Jar and sign Linux native libraries -->
245 <jar jarfile="${webstart}/lwjgl-linux.jar"
247 includes="liblwjgl.so"
250 <jar jarfile="${webstart}/openal-linux.jar"
252 includes="libopenal.so"
255 <jar jarfile="${webstart}/jinput-linux.jar"
257 includes="libjinput-linux.so"
260 <signjar jar="${webstart}/lwjgl-linux.jar"
262 keystore="${webstart}/${keyStore}"
263 storepass="${storepass}"
265 <signjar jar="${webstart}/openal-linux.jar"
267 keystore="${webstart}/${keyStore}"
268 storepass="${storepass}"
270 <signjar jar="${webstart}/jinput-linux.jar"
272 keystore="${webstart}/${keyStore}"
273 storepass="${storepass}"
276 <!-- Jar (eventually) and sign Mac native libraries -->
277 <jar jarfile="${webstart}/lwjgl-mac.jar"
279 includes="liblwjgl.jnilib"
282 <jar jarfile="${webstart}/openal-mac.jar"
284 includes="openal.dylib"
286 /><!--fix me: shouldn't it be a jnilib?-->
287 <jar jarfile="${webstart}/jinput-mac.jar"
289 includes="libjinput.jnilib"
293 <signjar jar="${webstart}/lwjgl-mac.jar"
295 keystore="${webstart}/${keyStore}"
296 storepass="${storepass}"
298 <signjar jar="${webstart}/openal-mac.jar"
300 keystore="${webstart}/${keyStore}"
301 storepass="${storepass}"
303 <signjar jar="${webstart}/jinput-mac.jar"
305 keystore="${webstart}/${keyStore}"
306 storepass="${storepass}"
309 <!-- Sign the lwjgl jar -->
310 <signjar jar="${seg}/lib/lwjgl.jar"
312 keystore="${webstart}/${keyStore}"
313 storepass="${storepass}"
316 <!-- Sign the lwjgl fmod3 jar -->
317 <signjar jar="${seg}/lib/lwjgl_fmod3.jar"
319 keystore="${webstart}/${keyStore}"
320 storepass="${storepass}"
324 <target name="nightly" depends="webdist-all, webdist-nativelibs, webdist-test">
325 <echo>${libs}/*.jar</echo>
326 <zip zipfile="${release}/jME.zip">
327 <zipfileset dir="${libs}" prefix="lib">
328 <include name="*.jar"/>
329 <include name="*.dll"/>
330 <include name="*.so"/>
331 <include name="*.*lib"/>
333 <fileset dir="${release}" >
334 <include name="*.jar"/>
337 <zip zipfile="${release}/src.zip">
338 <zipfileset dir="${src}" prefix="src">
339 <include name="**/*.*"/>
342 <!-- <mkdir dir="ftp"/>-->
343 <!-- <copy todir="ftp">-->
344 <ftp server="${ftphost}" userid="${ftpuser}" password="${ftppassword}" remotedir="nightly" >
345 <fileset dir="${webstart}" >
346 <include name="*.jar"/>
347 <include name="*.jnlp"/>
349 <fileset dir="${libs}" >
350 <include name="*.jar"/>
352 <fileset dir="${release}" >
353 <include name="*.jar"/>
354 <include name="jME.zip"/>
355 <include name="src.zip"/>