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 <property name="javac.debug" value="false" />
21 <!-- I recommend defaulting javac.debug to true, but that would
22 require you to set it false when building public distros.
23 Having line numbers in debug output is useful for the 99.9%
24 of non-public builds, esp. for custom-builders who have
25 runtime problems. - blaine -->
26 <!-- end of defaults -->
29 <fileset dir="${libs}">
30 <include name="**/*.jar" />
32 <pathelement path="${class}" />
36 <echo message="${keyStore}" />
37 <mkdir dir="${src}" />
38 <mkdir dir="${class}" />
39 <mkdir dir="${data}" />
40 <mkdir dir="${doc}" />
43 <!-- Compiles all the jME classes, including com.jmex.* -->
44 <target name="compile" depends="init" description="generate jme classes">
45 <mkdir dir="${class}" />
46 <mkdir dir="${class}/com" />
47 <copy todir="${class}/com">
48 <fileset dir="${src}/com">
49 <exclude name="**/*.java" />
52 <javac source="1.5" target="1.5" srcdir="${src}/com" destdir="${class}"
53 classpathref="classpath" listfiles="no" fork="true"
54 memoryMaximumSize="256m" debug="${javac.debug}"/>
57 <target name="run-testchooser" depends="compile-test" description="Runs the TestChooser">
58 <java classname="jmetest.TestChooser" fork="true" 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="true" includes="**/com/jme/**/*.class, **/com/jme/**/*.tga, **/com/jme/**/*.png, **/com/jme/**/*.glf" />
68 <target name="dist-audio" depends="compile" description="generate jme jar file (audio)">
69 <jar jarfile="${jars}/jme-audio.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/audio/**/*.class" />
71 <target name="dist-awt" depends="compile" description="generate jme jar file (awt)">
72 <jar jarfile="${jars}/jme-awt.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/awt/**/*.class" />
74 <target name="dist-editors" depends="compile" description="generate jme jar file (editors)">
75 <jar jarfile="${jars}/jme-editors.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/editors/**/*.class" />
77 <target name="dist-effects" depends="compile" description="generate jme jar file (effects)">
78 <jar jarfile="${jars}/jme-effects.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/effects/**/*.class, **/com/jmex/effects/**/data/*.*" />
80 <target name="dist-font" depends="compile" description="generate jme jar file (font)">
81 <jar jarfile="${jars}/jme-font.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/font2d/**/*.class,**/com/jmex/font3d/**/*.class" />
83 <target name="dist-gamestates" depends="compile" description="generate jme jar file (gamestates)">
84 <jar jarfile="${jars}/jme-gamestates.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/game/**/*.class" />
86 <target name="dist-model" depends="compile" description="generate jme jar file (model)">
87 <jar jarfile="${jars}/jme-model.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/model/**/*.class" excludes="**/com/jmex/model/collada/**" />
89 <target name="dist-collada" depends="compile" description="generate jme jar file (collada)">
90 <jar jarfile="${jars}/jme-collada.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/model/collada/**/*.class" />
92 <target name="dist-scene" depends="compile" description="generate jme jar file (scene)">
93 <jar jarfile="${jars}/jme-scene.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/scene/**/*.class" />
95 <target name="dist-terrain" depends="compile" description="generate jme jar file (terrain)">
96 <jar jarfile="${jars}/jme-terrain.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/terrain/**/*.class" />
98 <target name="dist-xml" depends="compile" description="generate jme jar file (xml)">
99 <jar jarfile="${jars}/jme-xml.jar" basedir="${class}" update="no" compress="true" includes="**/com/jmex/xml/**/*.class" />
101 <!-- Creates all the jME jars -->
102 <target name="dist-all" depends="dist-core, dist-terrain, dist-audio, dist-awt, dist-effects, dist-model, dist-collada, dist-editors, dist-font, dist-gamestates, dist-scene, dist-xml" description="Generate all jar files" />
104 <target name="webdist-all" depends="dist-all" description="sign JARs for JNLP distribution">
105 <signjar jar="${jars}/jme.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
106 <signjar jar="${jars}/jme-awt.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
107 <signjar jar="${jars}/jme-audio.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
108 <signjar jar="${jars}/jme-editors.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
109 <signjar jar="${jars}/jme-effects.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
110 <signjar jar="${jars}/jme-font.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
111 <signjar jar="${jars}/jme-gamestates.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
112 <signjar jar="${jars}/jme-model.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
113 <signjar jar="${jars}/jme-collada.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
114 <signjar jar="${jars}/jme-scene.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
115 <signjar jar="${jars}/jme-terrain.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
116 <signjar jar="${jars}/jme-xml.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
119 <!-- Generats javadoc -->
120 <target name="doc" depends="compile" description="generate the javadoc documentation">
121 <javadoc destdir="${doc}" useExternalFile="yes" author="true" version="true" use="true" package="yes" windowtitle="jME API" maxmemory="256m">
122 <fileset dir="${src}/com">
123 <include name="**/*.java" />
124 <exclude name="**/jmex/model/collada/schema/**" />
129 <!-- Removes all compiled files and documentation, but leaves any created jars -->
130 <target name="clean" description="clean up">
131 <delete dir="${class}" />
132 <delete dir="${doc}" />
134 <fileset dir="${src}" includes="**/*.class" />
135 <fileset dir="${release}" includes="jme*.jar" />
136 <fileset dir="${webstart}" includes="*.jar" />
140 <target name="rebuild" depends="clean" description="build from clean">
144 <!-- *** jmetest-related build targets -->
146 <target name="compile-test" depends="compile" description="generate jme test classes">
147 <javac source="1.5" target="1.5" srcdir="${src}/jmetest" destdir="${class}"
148 classpathref="classpath" fork="true" memoryMaximumSize="256m"
149 debug="${javac.debug}"/>
150 <!-- copy the resources into the build directory -->
151 <copy todir="${class}/jmetest">
152 <fileset dir="${src}/jmetest">
153 <exclude name="**/*.java" />
158 <target name="dist-test" depends="compile-test" description="generate jme test class and data jars">
159 <!-- Jar the demo classes -->
161 <pathconvert property="jarclasspathlibs" pathsep=" " dirsep="/">
163 <fileset dir="${libs}">
164 <include name="*.jar" />
167 <mapper type="regexp" from=".*(lib.*)" to="\1" />
169 <pathconvert property="jarclasspathrelease" pathsep=" " dirsep="/">
171 <fileset dir="${jars}">
172 <include name="*.jar" />
173 <exclude name="jmetest.jar" />
176 <mapper type="regexp" from=".*target.(.*)" to="\1" />
178 <echo>${jarclasspathlibs} ${jarclasspathrelease}</echo>
180 <jar jarfile="${jars}/jmetest.jar" basedir="${class}" compress="true" excludes="**/jmetest/**/data/**,**/com/**" index="yes">
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-cursor.jar" basedir="${class}" compress="true" includes="**/jmetest/data/cursor/**" />
192 <jar jarfile="${jars}/jmetest-data-images.jar" basedir="${class}" compress="true" includes="**/jmetest/data/images/**" />
193 <jar jarfile="${jars}/jmetest-data-model.jar" basedir="${class}" compress="true" includes="**/jmetest/data/model/**" />
194 <jar jarfile="${jars}/jmetest-data-skybox1.jar" basedir="${class}" compress="true" includes="**/jmetest/data/skybox1/**" />
195 <jar jarfile="${jars}/jmetest-data-sound.jar" basedir="${class}" compress="true" includes="**/jmetest/data/sound/**" />
196 <jar jarfile="${jars}/jmetest-data-texture.jar" basedir="${class}" compress="true" includes="**/jmetest/data/texture/**" />
199 <target name="webdist-test" depends="dist-test" description="sign test jars for Webstart distribution">
200 <signjar jar="${jars}/jmetest.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
201 <signjar jar="${jars}/jmetest-data-cursor.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
202 <signjar jar="${jars}/jmetest-data-images.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
203 <signjar jar="${jars}/jmetest-data-model.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
204 <signjar jar="${jars}/jmetest-data-skybox1.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
205 <signjar jar="${jars}/jmetest-data-sound.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
206 <signjar jar="${jars}/jmetest-data-texture.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
209 <!-- Jar and sign all the libraries required by jME -->
210 <target name="webdist-nativelibs" description="jar and sign native libraries for Webstart distribution">
211 <!-- Jar and sign the Windows libraries -->
212 <jar jarfile="${webstart}/lwjgl-windows.jar" basedir="lib" includes="lwjgl.dll" update="yes" />
213 <jar jarfile="${webstart}/openal-windows.jar" basedir="lib" includes="OpenAL32.dll" update="yes" />
214 <jar jarfile="${webstart}/jinput-windows.jar" basedir="lib" includes="jinput-dxplugin.dll" update="yes" />
215 <signjar jar="${webstart}/lwjgl-windows.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
216 <signjar jar="${webstart}/openal-windows.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
217 <signjar jar="${webstart}/jinput-windows.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
219 <!-- Jar and sign Linux native libraries -->
220 <jar jarfile="${webstart}/lwjgl-linux.jar" basedir="lib" includes="liblwjgl.so" update="yes" />
221 <jar jarfile="${webstart}/openal-linux.jar" basedir="lib" includes="libopenal.so" update="yes" />
222 <jar jarfile="${webstart}/jinput-linux.jar" basedir="lib" includes="libjinput-linux.so" update="yes" />
223 <signjar jar="${webstart}/lwjgl-linux.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
224 <signjar jar="${webstart}/openal-linux.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
225 <signjar jar="${webstart}/jinput-linux.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
227 <!-- Jar (eventually) and sign Mac native libraries -->
228 <jar jarfile="${webstart}/lwjgl-mac.jar" basedir="lib" includes="liblwjgl.jnilib" update="yes" />
229 <jar jarfile="${webstart}/openal-mac.jar" basedir="lib" includes="openal.dylib" update="yes" />
230 <!--fix me: shouldn't it be a jnilib?-->
231 <jar jarfile="${webstart}/jinput-mac.jar" basedir="lib" includes="libjinput.jnilib" update="yes" />
233 <signjar jar="${webstart}/lwjgl-mac.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
234 <signjar jar="${webstart}/openal-mac.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
235 <signjar jar="${webstart}/jinput-mac.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
237 <!-- Sign the lwjgl jar -->
238 <signjar jar="${seg}/lib/lwjgl.jar" alias="jme" keystore="${webstart}/${keyStore}" storepass="${storepass}" />
241 <target name="nightly" depends="webdist-all, webdist-nativelibs, webdist-test">
242 <echo>${libs}/*.jar</echo>
243 <zip zipfile="${release}/jME.zip">
244 <zipfileset dir="${libs}" prefix="lib">
245 <include name="*.jar" />
246 <include name="*.dll" />
247 <include name="*.so" />
248 <include name="*.*lib" />
250 <fileset dir="${release}">
251 <include name="*.jar" />
254 <zip zipfile="${release}/src.zip">
255 <zipfileset dir="${src}" prefix="src">
256 <include name="**/*.*" />
259 <!-- <mkdir dir="ftp"/>-->
260 <!-- <copy todir="ftp">-->
261 <ftp server="${ftphost}" userid="${ftpuser}" password="${ftppassword}" remotedir="nightly">
262 <fileset dir="${webstart}">
263 <include name="*.jar" />
264 <include name="*.jnlp" />
266 <fileset dir="${libs}">
267 <include name="*.jar" />
269 <fileset dir="${release}">
270 <include name="*.jar" />
271 <include name="jME.zip" />
272 <include name="src.zip" />