source: josm/trunk/build.xml @ 3509

Last change on this file since 3509 was 3509, checked in by bastiK, 9 years ago

make java 6 warning message from [3417] work again. Basically it does not matter much if you put 1.5 or 1.6 there, but in this case it does: If you compile with 1.6 option and run with 1.5 jre, it fails at once. If you compile with 1.5 option, it will run normally, but fail as soon as it requires a java 6 class that is not shipped with 1.5 jre.

File size: 9.4 KB
Line 
1<!-- ** build.xml - main ant file for JOSM
2**
3** To build run
4**    ant clean
5**    ant dist
6** This will create 'josm-custom.jar'  in directory 'dist'. See also
7**   https://josm.openstreetmap.de/wiki/CreateBuild
8**
9**
10-->
11<project name="josm" default="dist" basedir="." xmlns:as="antlib:org.codehaus.mojo.animal_sniffer">
12        <property name="test.dir" value="test" />
13        <property name="src.dir" value="src" />
14        <property name="build.dir" value="build"/>
15        <!-- build parameter: compression level (ant -Dclevel=N)
16             N ranges from 0 (no compression) to 9 (maximum compression)
17             default: 9 -->
18        <condition property="clevel" value="${clevel}" else="9">
19                <isset property="clevel" />
20        </condition>
21
22        <!-- Java classpath addition (all jar files to compile tests with this) -->
23        <path id="classpath">
24                <fileset dir="lib">
25                        <include name="**/*.jar"/>
26                </fileset>
27        </path>
28
29
30        <!--
31          ** Used by Eclipse ant builder for updating
32          ** the REVISION file used by JOSM
33        -->
34        <target name="create-revision-eclipse">
35                <copy file="styles/standard/elemstyles.xml" todir="data"/>
36                <property name="revision.dir" value="bin"/>
37                <antcall target="create-revision" />
38        </target>
39
40        <!--
41          ** Creates the REVISION file to be included in the distribution
42          -->
43        <target name="create-revision">
44                <property name="revision.dir" value="${build.dir}"/>
45                <exec append="false" output="REVISION.XML" executable="svn" failifexecutionfails="false">
46                        <env key="LANG" value="C"/>
47                        <arg value="info"/>
48                        <arg value="--xml"/>
49                        <arg value="."/>
50                </exec>
51                <xmlproperty file="REVISION.XML" prefix="version" keepRoot="false" collapseAttributes="true"/>
52                <delete file="REVISION.XML" />
53                <tstamp>
54                        <format property="build.tstamp" pattern="yyyy-MM-dd HH:mm:ss"/>
55                </tstamp>
56
57                <property name="version.entry.commit.revision" value="UNKNOWN"/>
58                <mkdir dir="${revision.dir}" />
59                <echo file="${revision.dir}/REVISION">
60# automatically generated by JOSM build.xml - do not edit
61Revision: ${version.entry.commit.revision}
62Is-Local-Build: true
63Build-Date: ${build.tstamp}
64</echo>
65        </target>
66
67
68        <target name="dist" depends="compile,create-revision">
69
70                <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
71                        <env key="LANG" value="C"/>
72                        <arg value="info"/>
73                        <arg value="--xml"/>
74                        <arg value="."/>
75                </exec>
76                <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
77                <delete file="REVISION"/>
78                <property name="version.entry.commit.revision" value="UNKNOWN"/>
79                <property name="version.entry.commit.date" value="UNKNOWN"/>
80                <echo>Revision ${version.entry.commit.revision}</echo>
81                <copy file="CONTRIBUTION" todir="build"/>
82                <copy file="README" todir="build"/>
83                <copy file="LICENSE" todir="build"/>
84
85                <!-- styles -->
86                <copy file="styles/standard/elemstyles.xml" todir="build/data"/>
87
88                <!-- create josm-custom.jar -->
89                <delete file="dist/josm-custom.jar"/>
90                <jar destfile="dist/josm-custom.jar" basedir="build" level="${clevel}">
91                        <!-- add attribute excludes="**/*BZip2*,**/*Bzip2*" to create a non-bzip2 supporting jar -->
92                        <manifest>
93                                <attribute name="Main-class" value="JOSM" />
94                                <attribute name="Main-Version" value="${version.entry.commit.revision} SVN"/>
95                                <attribute name="Main-Date" value="${version.entry.commit.date}"/>
96                        </manifest>
97                        <zipfileset dir="images" prefix="images" />
98                        <zipfileset dir="data" prefix="data" />
99
100                        <!-- All jar files necessary to run only JOSM (no tests) -->
101                        <zipfileset src="lib/metadata-extractor-2.3.1-nosun.jar" />
102                        <zipfileset src="lib/signpost-core-1.2.1.1.jar" />
103                </jar>
104        </target>
105
106        <target name="distmac" depends="dist">
107                <!-- modify MacOS X Info.plist file to hold the SVN version number -->
108                <copy file="macosx/JOSM.app/Contents/Info.plist" todir="build"/>
109                <replace file="build/Info.plist" token="@SVNVersion@" value="${version.entry.commit.revision}"/>
110                <!-- create ZIP file with MacOS X application bundle -->
111                <zip destfile="dist/josm-custom-macosx.zip" update="true">
112                        <zipfileset dir="build" includes="CONTRIBUTION README LICENSE"/>
113                        <zipfileset dir="macosx" includes="JOSM.app/Contents JOSM.app/Contents/MacOS JOSM.app/Contents/Resources JOSM.app/Contents/Resources/Java JOSM.app/Contents/PkgInfo JOSM.app/Contents/Resources/JOSM.icns"/>
114                        <zipfileset dir="build" includes="Info.plist" prefix="JOSM.app/Contents"/>
115                        <zipfileset dir="dist" includes="josm-custom.jar" prefix="JOSM.app/Contents/Resources/Java"/>
116                        <zipfileset dir="macosx" includes="JOSM.app/Contents/MacOS/JOSM" filemode="755"/>
117                </zip>
118        </target>
119
120        <target name="compile" depends="init">
121                <javac srcdir="src" classpathref="classpath" destdir="build"
122                                target="1.5" source="1.5" debug="on" encoding="UTF-8">
123                        <compilerarg value="-Xlint:deprecation"/>
124                        <compilerarg value="-Xlint:unchecked"/>
125                </javac>
126        </target>
127
128        <target name="init">
129                <mkdir dir="build" />
130                <mkdir dir="dist" />
131        </target>
132
133        <target name="clean">
134                <delete dir="build" />
135                <delete dir="dist" />
136        </target>
137
138        <path id="test.classpath">
139                <fileset dir="${test.dir}/lib">
140                        <include name="**/*.jar"/>
141                </fileset>
142                <fileset dir="lib">
143                        <include name="**/*.jar"/>
144                </fileset>
145        </path>
146
147        <target name="test-init">
148                <mkdir dir="${test.dir}/${build.dir}" />
149                <mkdir dir="${test.dir}/report" />
150        </target>
151
152        <target name="test-clean">
153                <delete dir="${test.dir}/${build.dir}"/>
154                <delete dir="${test.dir}/report"/>
155        </target>
156
157        <target name="test-compile" depends="test-init">
158                <javac srcdir="${src.dir}:${test.dir}/unit" classpathref="test.classpath" destdir="${test.dir}/${build.dir}"
159                                target="1.5" source="1.5" debug="on" encoding="UTF-8">
160                        <compilerarg value="-Xlint:deprecation"/>
161                        <compilerarg value="-Xlint:unchecked"/>
162                </javac>
163                <javac srcdir="${src.dir}:${test.dir}/functional" classpathref="test.classpath" destdir="${test.dir}/${build.dir}"
164                                                target="1.5" source="1.5" debug="on" encoding="UTF-8">
165                        <compilerarg value="-Xlint:deprecation"/>
166                        <compilerarg value="-Xlint:unchecked"/>
167                </javac>
168        </target>
169
170        <target name="test" depends="test-compile">
171                <junit printsummary="yes">
172                        <sysproperty key="josm.home" value="${test.dir}/config/unit-josm.home"/>
173                        <classpath>
174                                <path refid="test.classpath"/>
175                                <pathelement path="${test.dir}/${build.dir}"/>
176                                <pathelement path="${test.dir}/config"/>
177                        </classpath>
178                        <formatter type="plain"/>
179                        <formatter type="xml"/>
180                        <batchtest fork="yes" todir="${test.dir}/report">
181                                <fileset dir="${test.dir}/unit" includes="**/*.java"/>
182                        </batchtest>
183                </junit>
184        </target>
185
186        <target name="dist-optimized" depends="dist">
187                <taskdef resource="proguard/ant/task.properties" classpath="tools/proguard.jar" />
188                <proguard>
189                -injars dist/josm-custom.jar
190                -outjars dist/josm-custom-optimized.jar
191
192                -libraryjars ${java.home}/lib/rt.jar
193                -libraryjars ${java.home}/lib/jce.jar
194
195                -dontoptimize
196                -dontobfuscate
197               
198                -dontskipnonpubliclibraryclasses
199
200                -keepclasseswithmembers public class org.openstreetmap.josm.gui.MainApplication {
201                    public static void main(java.lang.String[]);
202                }
203
204                -keep class JOSM
205                -keep class * extends org.openstreetmap.josm.io.FileImporter
206                -keep class * extends org.openstreetmap.josm.io.FileExporter
207                -keep class org.openstreetmap.josm.actions.search.SearchCompiler$Never
208
209                -keepclassmembers enum  * {
210                    public static **[] values();
211                    public static ** valueOf(java.lang.String);
212                }
213
214                -keepclassmembers class * {
215                    public protected *;
216                }
217                </proguard>
218        </target>
219
220        <target name="check-plugins" depends="dist-optimized">
221                <echo message="Check of plugins binary compatibility (needs ant 1.8)"/>
222
223                <local name="dir"/>
224                <local name="plugins"/>
225
226                <property name="dir" value="plugin-check"/>
227
228                <typedef uri="antlib:org.codehaus.mojo.animal_sniffer">
229                        <classpath path="tools/animal-sniffer-ant-tasks-1.5.jar" />
230                </typedef>
231
232                <delete dir="${dir}"/>
233
234                <mkdir dir="${dir}"/>
235
236                <as:build-signatures destfile="${dir}/api.sig">
237                        <path>
238                                <fileset file="dist/josm-custom-optimized.jar" />
239                                <fileset file="${java.home}/lib/rt.jar" />
240                        </path>
241                </as:build-signatures>
242
243                <!-- Download plugins -->
244                <loadresource property="plugins">
245                        <url url="http://josm.openstreetmap.de/plugin"/>
246                        <filterchain>
247                                <linecontainsregexp negate="true">
248                                        <regexp pattern="^\t.*"/>
249                                </linecontainsregexp>
250                                <linecontainsregexp negate="true">
251                                        <!-- List from PluginHandler.DEPRECATED_PLUGINS -->
252                                        <regexp pattern="mappaint|unglueplugin|ewmsplugin|ywms|tways-0.2|geotagged|landsat|namefinder|waypoints|slippy_map_chooser|tcx-support|usertools|AgPifoJ|utilsplugin"/>
253                                </linecontainsregexp>
254                                <tokenfilter>
255                                        <replaceregex pattern="^.*;" replace="" flags="gi"/>
256                                </tokenfilter>
257                        </filterchain>
258                </loadresource>
259
260                <copy todir="${dir}" flatten="true">
261                        <resourcelist>
262                                <string value="${plugins}"/>
263                        </resourcelist>
264                </copy>
265
266                <!-- Check plugins -->
267                <as:check-signature signature="${dir}/api.sig">
268                        <ignore classname="org.jgraph.*"/>
269                        <ignore classname="com.touchgraph.*"/>
270                        <ignore classname="com.sun.xml.fastinfoset.*"/>
271                        <ignore classname="javax.jms.*"/>
272                        <ignore classname="org.jvnet.staxex.*"/>
273                        <ignore classname="javax.mail.*"/>
274                        <ignore classname="com.sun.jdmk.*"/>
275                        <path path="${dir}"/>
276                </as:check-signature>
277
278        </target>
279
280
281</project>
Note: See TracBrowser for help on using the repository browser.