| 1 | <?xml version="1.0" encoding="utf-8"?>
 | 
|---|
| 2 | <!-- ** build.xml - main ant file for JOSM
 | 
|---|
| 3 | **
 | 
|---|
| 4 | ** To build run
 | 
|---|
| 5 | **    ant clean
 | 
|---|
| 6 | **    ant dist
 | 
|---|
| 7 | ** This will create 'josm-custom.jar' in directory 'dist'. See also
 | 
|---|
| 8 | **   https://josm.openstreetmap.de/wiki/DevelopersGuide/CreateBuild
 | 
|---|
| 9 | **
 | 
|---|
| 10 | -->
 | 
|---|
| 11 | <project name="josm" default="dist"
 | 
|---|
| 12 |          xmlns:as="antlib:org.codehaus.mojo.animal_sniffer"
 | 
|---|
| 13 |          xmlns:if="ant:if"
 | 
|---|
| 14 |          xmlns:ivy="antlib:org.apache.ivy.ant"
 | 
|---|
| 15 |          xmlns:jacoco="antlib:org.jacoco.ant"
 | 
|---|
| 16 |          xmlns:unless="ant:unless"
 | 
|---|
| 17 | >
 | 
|---|
| 18 |     <target name="init-ivy" description="Initialize dependency management system Apache Ivy">
 | 
|---|
| 19 |         <property name="ivy.version" value="2.5.1"/>
 | 
|---|
| 20 |         <dirname property="base.dir" file="${ant.file.josm}"/>
 | 
|---|
| 21 |         <property name="lib.dir"   location="${base.dir}/lib"/>
 | 
|---|
| 22 |         <property name="tools.dir" location="${base.dir}/tools"/>
 | 
|---|
| 23 |         <property name="tools.ivy" location="${tools.dir}/ivy.xml"/>
 | 
|---|
| 24 |         <property name="ivy.jar.dir" location="${tools.dir}/ivy"/>
 | 
|---|
| 25 |         <property name="ivy.jar.file" location="${ivy.jar.dir}/ivy-${ivy.version}.jar"/>
 | 
|---|
| 26 |         <mkdir dir="${ivy.jar.dir}"/>
 | 
|---|
| 27 |         <get src="https://josm.openstreetmap.de/nexus/content/repositories/public/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"
 | 
|---|
| 28 |              dest="${ivy.jar.file}"
 | 
|---|
| 29 |              skipexisting="true"
 | 
|---|
| 30 |         />
 | 
|---|
| 31 |         <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy.jar.file}"/>
 | 
|---|
| 32 |     </target>
 | 
|---|
| 33 |     <target name="init-properties" description="Initialize properties for the build">
 | 
|---|
| 34 |         <property environment="env"/>
 | 
|---|
| 35 |         <!-- Load properties in a target and not at top level, so this build file can be
 | 
|---|
| 36 |         imported from an IDE ant file (Netbeans) without messing up IDE properties.
 | 
|---|
| 37 |         When imported from another file, ${basedir} will point to the parent directory
 | 
|---|
| 38 |         of the importing ant file. Use ${base.dir} instead, which is always the parent
 | 
|---|
| 39 |         directory of this file. -->
 | 
|---|
| 40 |         <dirname property="base.dir" file="${ant.file.josm}"/>
 | 
|---|
| 41 |         <property name="test.dir" location="${base.dir}/test"/>
 | 
|---|
| 42 |         <property name="src.dir" location="${base.dir}/src"/>
 | 
|---|
| 43 |         <condition property="sign.jar">
 | 
|---|
| 44 |             <and>
 | 
|---|
| 45 |                 <isset property="env.SIGN_ALIAS"/>
 | 
|---|
| 46 |                 <isset property="env.SIGN_KEYSTORE"/>
 | 
|---|
| 47 |                 <isset property="env.SIGN_KEYPASS"/>
 | 
|---|
| 48 |                 <isset property="env.SIGN_STOREPASS"/>
 | 
|---|
| 49 |                 <isset property="env.SIGN_TSA"/>
 | 
|---|
| 50 |             </and>
 | 
|---|
| 51 |         </condition>
 | 
|---|
| 52 |         <condition property="noJavaFX">
 | 
|---|
| 53 |             <or>
 | 
|---|
| 54 |                 <isset property="env.JOSM_NOJAVAFX"/>
 | 
|---|
| 55 |                 <not>
 | 
|---|
| 56 |                     <available classname="javafx.scene.media.Media"/>
 | 
|---|
| 57 |                 </not>
 | 
|---|
| 58 |             </or>
 | 
|---|
| 59 |         </condition>
 | 
|---|
| 60 |         <available property="svn.present" file="${base.dir}/.svn"/>
 | 
|---|
| 61 |         <available property="git.present" file="${base.dir}/.git"/>
 | 
|---|
| 62 |         <property name="build.dir" location="${base.dir}/build"/>
 | 
|---|
| 63 |         <property name="dist.dir" location="${base.dir}/dist"/>
 | 
|---|
| 64 |         <property name="resources.dir" location="${base.dir}/resources"/>
 | 
|---|
| 65 |         <property name="modules.dir" location="${dist.dir}/modules"/>
 | 
|---|
| 66 |         <property name="tools.dir" location="${base.dir}/tools"/>
 | 
|---|
| 67 |         <property name="pmd.dir" location="${tools.dir}/pmd"/>
 | 
|---|
| 68 |         <property name="checkstyle.dir" location="${tools.dir}/checkstyle"/>
 | 
|---|
| 69 |         <property name="spotbugs.dir" location="${tools.dir}/spotbugs"/>
 | 
|---|
| 70 |         <property name="javacc.home" location="${tools.dir}"/>
 | 
|---|
| 71 |         <property name="mapcss.dir" location="${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss"/>
 | 
|---|
| 72 |         <property name="proj-build.dir" location="${base.dir}/build2"/>
 | 
|---|
| 73 |         <property name="script-build.dir" location="${base.dir}/build2"/>
 | 
|---|
| 74 |         <property name="checkstyle-build.dir" location="${base.dir}/build2"/>
 | 
|---|
| 75 |         <property name="epsg.output" location="${resources.dir}/data/projection/custom-epsg"/>
 | 
|---|
| 76 |         <property name="commons-lang3.jar" location="${tools.dir}/commons-lang3.jar"/>
 | 
|---|
| 77 |         <property name="dist.jar" location="${dist.dir}/josm-custom.jar"/>
 | 
|---|
| 78 |         <property name="dist-optimized.jar" location="${dist.dir}/josm-custom-optimized.jar"/>
 | 
|---|
| 79 |         <property name="dist-sources.jar" location="${dist.dir}/josm-custom-sources.jar"/>
 | 
|---|
| 80 |         <property name="java.lang.version" value="8" />
 | 
|---|
| 81 |         <property name="test.headless" value="true" />
 | 
|---|
| 82 |         <property name="jacoco.includes" value="org.openstreetmap.josm.*" />
 | 
|---|
| 83 |         <property name="jacoco.inclbootstrapclasses" value="false" />
 | 
|---|
| 84 |         <property name="jacoco.inclnolocationclasses" value="false" />
 | 
|---|
| 85 |         <property name="junit.printsummary" value="on" />
 | 
|---|
| 86 |         <property name="default-junit-includes" value="**/*Test.class"/>
 | 
|---|
| 87 |         <property name="default-junitIT-includes" value="**/*TestIT.class"/>
 | 
|---|
| 88 |         <!-- build parameter: compression level (ant -Dclevel=N)
 | 
|---|
| 89 |                  N ranges from 0 (no compression) to 9 (maximum compression)
 | 
|---|
| 90 |                  default: 9 -->
 | 
|---|
| 91 |         <condition property="clevel" value="${clevel}" else="9">
 | 
|---|
| 92 |             <isset property="clevel"/>
 | 
|---|
| 93 |         </condition>
 | 
|---|
| 94 |         <!-- For Java specific stuff by version -->
 | 
|---|
| 95 |         <condition property="isJava9"><matches string="${ant.java.version}" pattern="(1.)?(9|[1-9][0-9])" /></condition>
 | 
|---|
| 96 |         <condition property="isJava10"><matches string="${ant.java.version}" pattern="[1-9][0-9]" /></condition>
 | 
|---|
| 97 |         <condition property="isJava11"><matches string="${ant.java.version}" pattern="1[1-9]|[2-9][0-9]" /></condition>
 | 
|---|
| 98 |         <condition property="isJava12"><matches string="${ant.java.version}" pattern="1[2-9]|[2-9][0-9]" /></condition>
 | 
|---|
| 99 |         <condition property="isJava13"><matches string="${ant.java.version}" pattern="1[3-9]|[2-9][0-9]" /></condition>
 | 
|---|
| 100 |         <condition property="isJava14"><matches string="${ant.java.version}" pattern="1[4-9]|[2-9][0-9]" /></condition>
 | 
|---|
| 101 |         <condition property="isJava16"><matches string="${ant.java.version}" pattern="1[6-9]|[2-9][0-9]" /></condition>
 | 
|---|
| 102 |         <condition property="isJava18"><matches string="${ant.java.version}" pattern="1[8-9]|[2-9][0-9]" /></condition>
 | 
|---|
| 103 |         <condition property="isJava19"><matches string="${ant.java.version}" pattern="19|[2-9][0-9]" /></condition>
 | 
|---|
| 104 |         <condition property="isJava20"><matches string="${ant.java.version}" pattern="[2-9][0-9]" /></condition>
 | 
|---|
| 105 |         <condition property="isJava21"><matches string="${ant.java.version}" pattern="2[1-9]|[3-9][0-9]" /></condition>
 | 
|---|
| 106 |         <!-- Disable jacoco on Java 19+, see https://github.com/jacoco/jacoco/pull/1282 -->
 | 
|---|
| 107 |         <condition property="coverageByDefault">
 | 
|---|
| 108 |             <not>
 | 
|---|
| 109 |                 <isset property="isJava19"/>
 | 
|---|
| 110 |             </not>
 | 
|---|
| 111 |         </condition>
 | 
|---|
| 112 |         <condition property="java.library.dir" value="jmods" else="lib">
 | 
|---|
| 113 |             <isset property="isJava9"/>
 | 
|---|
| 114 |         </condition>
 | 
|---|
| 115 |     </target>
 | 
|---|
| 116 |     <target name="init-svn-revision-xml" if="svn.present" depends="init-properties"
 | 
|---|
| 117 |             description="Initialize the REVISION.XML file from SVN information">
 | 
|---|
| 118 |         <exec append="false" output="${base.dir}/REVISION.XML" executable="svn" dir="${base.dir}" resultproperty="svn.info.result">
 | 
|---|
| 119 |             <env key="LANG" value="C"/>
 | 
|---|
| 120 |             <arg value="info"/>
 | 
|---|
| 121 |             <arg value="--xml"/>
 | 
|---|
| 122 |             <arg value="."/>
 | 
|---|
| 123 |         </exec>
 | 
|---|
| 124 |     </target>
 | 
|---|
| 125 |     <target name="init-git-revision-xml" if="git.present" depends="init-properties"
 | 
|---|
| 126 |             description="Initialize the REVISION.XML file from git information">
 | 
|---|
| 127 |         <exec append="false" output="${base.dir}/REVISION.XML" executable="git" dir="${base.dir}">
 | 
|---|
| 128 |             <arg value="log"/>
 | 
|---|
| 129 |             <arg value="-1"/>
 | 
|---|
| 130 |             <arg value="--grep=git-svn-id"/>
 | 
|---|
| 131 |             <!--
 | 
|---|
| 132 |             %B:  raw body (unwrapped subject and body)
 | 
|---|
| 133 |             %n:  new line
 | 
|---|
| 134 |             %ai: author date, ISO 8601 format
 | 
|---|
| 135 |             -->
 | 
|---|
| 136 |             <arg value="--pretty=format:%B%n%ai"/>
 | 
|---|
| 137 |             <arg value="HEAD"/>
 | 
|---|
| 138 |         </exec>
 | 
|---|
| 139 |         <replaceregexp file="${base.dir}/REVISION.XML" flags="s"
 | 
|---|
| 140 |                        match=".*git-svn-id: [^@]*@([0-9]+).*(\d{4}-\d{2}-\d{2}.\d{2}\:\d{2}\:\d{2}\s*[+-]\d{2}:?\d{2})\s*$"
 | 
|---|
| 141 |                        replace="<info><entry><commit revision="\1"><date>\2</date></commit></entry></info>"/>
 | 
|---|
| 142 |     </target>
 | 
|---|
| 143 |     <target name="create-revision" depends="init-properties,init-svn-revision-xml,init-git-revision-xml"
 | 
|---|
| 144 |             description="Create the REVISION file to be included in the distribution based on the latest SVN/Git commit">
 | 
|---|
| 145 |         <xmlproperty file="${base.dir}/REVISION.XML" prefix="version" keepRoot="false" collapseAttributes="true"/>
 | 
|---|
| 146 |         <delete file="${base.dir}/REVISION.XML"/>
 | 
|---|
| 147 |         <tstamp>
 | 
|---|
| 148 |             <format property="build.tstamp" pattern="yyyy-MM-dd HH:mm:ss"/>
 | 
|---|
| 149 |         </tstamp>
 | 
|---|
| 150 |         <property name="version.entry.commit.revision" value="UNKNOWN"/>
 | 
|---|
| 151 |         <property name="version.entry.commit.date" value="UNKNOWN"/>
 | 
|---|
| 152 |         <!-- add Build-Name: ... when making special builds, e.g. DEBIAN -->
 | 
|---|
| 153 |         <echo file="${resources.dir}/REVISION">
 | 
|---|
| 154 | # automatically generated by JOSM build.xml - do not edit
 | 
|---|
| 155 | Revision: ${version.entry.commit.revision}
 | 
|---|
| 156 | Build-Date: ${build.tstamp}
 | 
|---|
| 157 | </echo>
 | 
|---|
| 158 |         <echo unless:set="releasebuild" file="${resources.dir}/REVISION" append="true">
 | 
|---|
| 159 |         Is-Local-Build: true
 | 
|---|
| 160 | </echo>
 | 
|---|
| 161 |     </target>
 | 
|---|
| 162 |     <target name="check-schemas" unless="check-schemas.notRequired" depends="init-properties"
 | 
|---|
| 163 |             description="Check internal XML files against their XSD">
 | 
|---|
| 164 |         <schemavalidate file="${resources.dir}/data/defaultpresets.xml" >
 | 
|---|
| 165 |             <schema namespace="http://josm.openstreetmap.de/tagging-preset-1.0" file="${resources.dir}/data/tagging-preset.xsd" />
 | 
|---|
| 166 |         </schemavalidate>
 | 
|---|
| 167 |     </target>
 | 
|---|
| 168 |     <target name="dist" depends="compile,extract-libraries,epsg,copy-resources,check-schemas"
 | 
|---|
| 169 |             description="Main target that builds JOSM and checks XML against schemas">
 | 
|---|
| 170 |         <echo>Revision ${version.entry.commit.revision}</echo>
 | 
|---|
| 171 |         <copy file="CONTRIBUTION" todir="${build.dir}"/>
 | 
|---|
| 172 |         <copy file="README" todir="${build.dir}"/>
 | 
|---|
| 173 |         <copy file="LICENSE" todir="${build.dir}"/>
 | 
|---|
| 174 |         <!-- create josm-custom.jar -->
 | 
|---|
| 175 |         <delete file="${dist.jar}"/>
 | 
|---|
| 176 |         <jar destfile="${dist.jar}" basedir="${build.dir}" level="${clevel}">
 | 
|---|
| 177 |             <!-- add attribute excludes="**/*BZip2*,**/*Bzip2*" to create a non-bzip2 supporting jar -->
 | 
|---|
| 178 |             <manifest>
 | 
|---|
| 179 |                 <attribute name="Main-class" value="org.openstreetmap.josm.gui.MainApplication"/>
 | 
|---|
| 180 |                 <attribute name="Main-Version" value="${version.entry.commit.revision} SVN"/>
 | 
|---|
| 181 |                 <attribute name="Main-Date" value="${version.entry.commit.date}"/>
 | 
|---|
| 182 |                 <attribute name="Permissions" value="all-permissions"/>
 | 
|---|
| 183 |                 <attribute name="Codebase" value="josm.openstreetmap.de"/>
 | 
|---|
| 184 |                 <attribute name="Application-Name" value="JOSM - Java OpenStreetMap Editor"/>
 | 
|---|
| 185 |                 <!-- Java 9 stuff. Entries are safely ignored by Java 8 -->
 | 
|---|
| 186 |                 <attribute name="Add-Exports" value="java.base/sun.security.action java.desktop/com.apple.eawt java.desktop/com.sun.imageio.spi java.desktop/com.sun.imageio.plugins.jpeg javafx.graphics/com.sun.javafx.application jdk.deploy/com.sun.deploy.config" />
 | 
|---|
| 187 |                 <attribute name="Add-Opens" value="java.base/java.lang java.base/java.nio java.base/jdk.internal.loader java.base/jdk.internal.ref java.desktop/javax.imageio.spi java.desktop/javax.swing.text.html java.prefs/java.util.prefs" />
 | 
|---|
| 188 |                 <!-- Indicate that this jar may have version specific classes. Only used in Java9+. -->
 | 
|---|
| 189 |                 <attribute name="Multi-Release" value="true"/>
 | 
|---|
| 190 |             </manifest>
 | 
|---|
| 191 |         </jar>
 | 
|---|
| 192 |         <!-- Sign jar if all environment variables are set -->
 | 
|---|
| 193 |         <signjar jar="${dist.jar}" alias="${env.SIGN_ALIAS}" tsaurl="${env.SIGN_TSA}"
 | 
|---|
| 194 |             keystore="${env.SIGN_KEYSTORE}" storepass="${env.SIGN_STOREPASS}" keypass="${env.SIGN_KEYPASS}" if:set="sign.jar" />
 | 
|---|
| 195 |     </target>
 | 
|---|
| 196 |     <target name="javacc" depends="init" unless="javacc.notRequired" description="Compile the MapCSS compiler">
 | 
|---|
| 197 |         <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="javacc.classpath" conf="javacc"/>
 | 
|---|
| 198 |         <mkdir dir="${mapcss.dir}/parsergen"/>
 | 
|---|
| 199 |         <java classname="javacc" fork="true" dir="${mapcss.dir}" failonerror="true">
 | 
|---|
| 200 |             <classpath path="${tools.dir}/javacc"/>
 | 
|---|
| 201 |             <classpath refid="javacc.classpath"/>
 | 
|---|
| 202 |             <arg value="-DEBUG_PARSER=false"/>
 | 
|---|
| 203 |             <arg value="-DEBUG_TOKEN_MANAGER=false"/>
 | 
|---|
| 204 |             <arg value="-JDK_VERSION=1.${java.lang.version}"/>
 | 
|---|
| 205 |             <arg value="-GRAMMAR_ENCODING=UTF-8"/>
 | 
|---|
| 206 |             <arg value="-UNICODE_INPUT=true"/>
 | 
|---|
| 207 |             <arg value="${mapcss.dir}/MapCSSParser.jj"/>
 | 
|---|
| 208 |         </java>
 | 
|---|
| 209 |     </target>
 | 
|---|
| 210 |     <macrodef name="call-javac-compile">
 | 
|---|
| 211 |         <attribute name="sourcepath" default=""/>
 | 
|---|
| 212 |         <attribute name="srcdir" default="${src.dir}"/>
 | 
|---|
| 213 |         <attribute name="fork" default="yes"/>
 | 
|---|
| 214 |         <attribute name="excludes" default=""/>
 | 
|---|
| 215 |         <attribute name="includes" default="**/*.java"/>
 | 
|---|
| 216 |         <attribute name="destdir" default="${build.dir}"/>
 | 
|---|
| 217 |         <attribute name="debug" default="on"/>
 | 
|---|
| 218 |         <attribute name="includeantruntime" default="false"/>
 | 
|---|
| 219 |         <attribute name="encoding" default="UTF-8"/>
 | 
|---|
| 220 |         <attribute name="release" default="${java.lang.version}"/>
 | 
|---|
| 221 |         <element name="cp-elements" optional="true"/>
 | 
|---|
| 222 |         <sequential>
 | 
|---|
| 223 |           <javac sourcepath="@{sourcepath}" srcdir="@{srcdir}" fork="@{fork}"
 | 
|---|
| 224 |             includes="@{includes}" excludes="@{excludes}" destdir="@{destdir}" release="@{release}"
 | 
|---|
| 225 |             debug="@{debug}" includeantruntime="@{includeantruntime}" encoding="@{encoding}">
 | 
|---|
| 226 |               <compilerarg value="-J-Xbootclasspath/p:${toString:errorprone_javac.classpath}" unless:set="isJava9"/>
 | 
|---|
| 227 |               <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
 | 
|---|
| 228 |               <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
 | 
|---|
| 229 |               <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
 | 
|---|
| 230 |               <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
 | 
|---|
| 231 |               <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
 | 
|---|
| 232 |               <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
 | 
|---|
| 233 |               <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
 | 
|---|
| 234 |               <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
 | 
|---|
| 235 |               <compilerarg value="-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED" if:set="isJava16" unless:set="noErrorProne"/>
 | 
|---|
| 236 |               <compilerarg line="-XDcompilePolicy=simple"/>
 | 
|---|
| 237 |               <compilerarg value="-processorpath"/>
 | 
|---|
| 238 |               <compilerarg value="${toString:errorprone.classpath}:${toString:semanticdb.classpath}"/>
 | 
|---|
| 239 |               <compilerarg value="-Xlint:cast"/>
 | 
|---|
| 240 |               <compilerarg value="-Xlint:deprecation"/>
 | 
|---|
| 241 |               <compilerarg value="-Xlint:dep-ann"/>
 | 
|---|
| 242 |               <compilerarg value="-Xlint:divzero"/>
 | 
|---|
| 243 |               <compilerarg value="-Xlint:empty"/>
 | 
|---|
| 244 |               <compilerarg value="-Xlint:finally"/>
 | 
|---|
| 245 |               <compilerarg value="-Xlint:overrides"/>
 | 
|---|
| 246 |               <!--<compilerarg value="-Xlint:rawtypes"/>-->
 | 
|---|
| 247 |               <compilerarg value="-Xlint:static"/>
 | 
|---|
| 248 |               <compilerarg value="-Xlint:try"/>
 | 
|---|
| 249 |               <compilerarg value="-Xlint:unchecked"/>
 | 
|---|
| 250 |               <!-- Undocumented argument to ignore "Sun internal proprietary API" warning, see http://stackoverflow.com/a/13862308/2257172 -->
 | 
|---|
| 251 |               <compilerarg value="-XDignore.symbol.file"/>
 | 
|---|
| 252 |               <compilerarg value="-Xplugin:ErrorProne -XepExcludedPaths:.*/parsergen/.* -Xep:ReferenceEquality:OFF -Xep:FutureReturnValueIgnored:OFF -Xep:JdkObsolete:OFF -Xep:EqualsGetClass:OFF -Xep:UndefinedEquals:OFF -Xep:BadImport:OFF -Xep:AnnotateFormatMethod:OFF -Xep:JavaUtilDate:OFF -Xep:DoNotCallSuggester:OFF -Xep:BanSerializableRead:OFF -Xep:RestrictedApiChecker:OFF -Xep:InlineMeSuggester:OFF" unless:set="noErrorProne"/>
 | 
|---|
| 253 |               <compilerarg line="-Xmaxwarns 1000"/>
 | 
|---|
| 254 |               <compilerarg value="-Xplugin:semanticdb -sourceroot:@{srcdir} -targetroot:${build.dir}/semanticdb" if:set="lsif" />
 | 
|---|
| 255 |               <classpath>
 | 
|---|
| 256 |                   <path refid="runtime.path"/>
 | 
|---|
| 257 |                   <cp-elements/>
 | 
|---|
| 258 |               </classpath>
 | 
|---|
| 259 |           </javac>
 | 
|---|
| 260 |       </sequential>
 | 
|---|
| 261 |     </macrodef>
 | 
|---|
| 262 |     <macrodef name="call-javac-compile-mrjar">
 | 
|---|
| 263 |       <!--
 | 
|---|
| 264 |         See https://openjdk.java.net/jeps/238 for the specification
 | 
|---|
| 265 |         The big bits are that the version specific files should be in META-INF/versions/${javaVersion}/
 | 
|---|
| 266 |         using the same package scheme. And that the files in the version specific directories are *full*
 | 
|---|
| 267 |         implementations of the class they are replacing.
 | 
|---|
| 268 |       -->
 | 
|---|
| 269 |       <attribute name="release"/>
 | 
|---|
| 270 |       <sequential>
 | 
|---|
| 271 |         <condition property="java@{release}DirExists">
 | 
|---|
| 272 |           <and>
 | 
|---|
| 273 |             <isset property="isJava@{release}"/>
 | 
|---|
| 274 |             <resourceexists>
 | 
|---|
| 275 |               <file file="${src.dir}/main/java-@{release}"/>
 | 
|---|
| 276 |             </resourceexists>
 | 
|---|
| 277 |           </and>
 | 
|---|
| 278 |         </condition>
 | 
|---|
| 279 |         <echo message="Compiling Java @{release} files" if:true="${java@{release}DirExists}"/>
 | 
|---|
| 280 |         <mkdir dir="${build.dir}/META-INF/versions/@{release}" if:true="${java@{release}DirExists}"/>
 | 
|---|
| 281 |         <call-javac-compile srcdir="${src.dir}/main/java-@{release}" destdir="${build.dir}/META-INF/versions/@{release}" release="@{release}" if:true="${java@{release}DirExists}">
 | 
|---|
| 282 |             <cp-elements>
 | 
|---|
| 283 |               <pathelement path="${build.dir}"/>
 | 
|---|
| 284 |             </cp-elements>
 | 
|---|
| 285 |         </call-javac-compile>
 | 
|---|
| 286 |       </sequential>
 | 
|---|
| 287 |     </macrodef>
 | 
|---|
| 288 |     <target name="compile" depends="init,javacc" unless="compile.notRequired" description="Compile JOSM">
 | 
|---|
| 289 |         <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="errorprone.classpath" conf="errorprone"/>
 | 
|---|
| 290 |         <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="errorprone_javac.classpath" conf="errorprone_javac"/>
 | 
|---|
| 291 |         <!-- JOSM -->
 | 
|---|
| 292 |         <call-javac-compile excludes="**/package-info.java,**/module-info.java,main/**" release="${java.lang.version}"/>
 | 
|---|
| 293 |         <!-- Java 11 specific files (2018-09 LTS) -->
 | 
|---|
| 294 |         <call-javac-compile-mrjar release="11"/>
 | 
|---|
| 295 |         <!-- Java 17 specific files (2021-09 LTS) -->
 | 
|---|
| 296 |         <call-javac-compile-mrjar release="17"/>
 | 
|---|
| 297 |         <!-- Java 18 specific files -->
 | 
|---|
| 298 |         <call-javac-compile-mrjar release="18"/>
 | 
|---|
| 299 |         <!-- Java 19 specific files -->
 | 
|---|
| 300 |         <call-javac-compile-mrjar release="19"/>
 | 
|---|
| 301 |         <!-- Java 20 specific files -->
 | 
|---|
| 302 |         <call-javac-compile-mrjar release="20"/>
 | 
|---|
| 303 |         <!-- Java 21 specific files (2023-09 LTS) -->
 | 
|---|
| 304 |         <call-javac-compile-mrjar release="21"/>
 | 
|---|
| 305 |     </target>
 | 
|---|
| 306 |     <target name="create-resources" depends="create-revision" description="Create generated resource files">
 | 
|---|
| 307 |         <copy todir="${resources.dir}">
 | 
|---|
| 308 |             <file file="CONTRIBUTION"/>
 | 
|---|
| 309 |             <file file="README"/>
 | 
|---|
| 310 |             <file file="LICENSE"/>
 | 
|---|
| 311 |         </copy>
 | 
|---|
| 312 |     </target>
 | 
|---|
| 313 |     <target name="copy-resources" depends="create-resources" description="Copy resource files to build directory">
 | 
|---|
| 314 |         <copy todir="build" failonerror="no" includeemptydirs="no">
 | 
|---|
| 315 |             <fileset dir="${resources.dir}"/>
 | 
|---|
| 316 |         </copy>
 | 
|---|
| 317 |     </target>
 | 
|---|
| 318 |     <target name="init" depends="init-properties,resolve" description="Initialize the build">
 | 
|---|
| 319 |         <uptodate property="javacc.notRequired" targetfile="${mapcss.dir}/parsergen/MapCSSParser.java" >
 | 
|---|
| 320 |             <srcfiles dir="${mapcss.dir}" includes="MapCSSParser.jj"/>
 | 
|---|
| 321 |         </uptodate>
 | 
|---|
| 322 |         <uptodate property="epsg.notRequired" targetfile="${epsg.output}">
 | 
|---|
| 323 |             <srcfiles file="${base.dir}/scripts/BuildProjectionDefinitions.java"/>
 | 
|---|
| 324 |             <srcfiles dir="nodist/data/projection"/>
 | 
|---|
| 325 |         </uptodate>
 | 
|---|
| 326 |         <mkdir dir="${build.dir}"/>
 | 
|---|
| 327 |         <mkdir dir="${dist.dir}"/>
 | 
|---|
| 328 |     </target>
 | 
|---|
| 329 |     <target name="javadoc" depends="init" description="Generate API documentation from JOSM source files">
 | 
|---|
| 330 |         <javadoc destdir="javadoc"
 | 
|---|
| 331 |                 sourcepath="${src.dir}"
 | 
|---|
| 332 |                 classpathref="compile.path"
 | 
|---|
| 333 |                 encoding="UTF-8"
 | 
|---|
| 334 |                 packagenames="org.openstreetmap.josm.*"
 | 
|---|
| 335 |                 excludepackagenames="org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.*"
 | 
|---|
| 336 |                 windowtitle="JOSM"
 | 
|---|
| 337 |                 use="true"
 | 
|---|
| 338 |                 private="true"
 | 
|---|
| 339 |                 linksource="true"
 | 
|---|
| 340 |                 author="false">
 | 
|---|
| 341 |             <link href="https://docs.oracle.com/javase/8/docs/api" unless:set="isJava11" />
 | 
|---|
| 342 |             <link href="https://docs.oracle.com/en/java/javase/11/docs/api" if:set="isJava11" />
 | 
|---|
| 343 |             <doctitle><![CDATA[<h2>
 | 
|---|
| 344 |                 <img src="https://josm.openstreetmap.de/svn/trunk/nodist/images/logo/header.png" style="vertical-align: middle;" alt="JOSM">
 | 
|---|
| 345 |                 — Javadoc
 | 
|---|
| 346 |             </h2>]]></doctitle>
 | 
|---|
| 347 |             <bottom><![CDATA[<a href="https://josm.openstreetmap.de/">JOSM</a>]]></bottom>
 | 
|---|
| 348 |             <!-- Disable HTML checking until we switch to Java13+, see https://bugs.openjdk.java.net/browse/JDK-8223552 -->
 | 
|---|
| 349 |             <arg value="-Xdoclint:-html" if:set="isJava13" />
 | 
|---|
| 350 |             <arg value="-html5" if:set="isJava9" />
 | 
|---|
| 351 |             <arg value="--add-exports" if:set="isJava9" unless:set="noJavaFX" />
 | 
|---|
| 352 |             <arg value="javafx.graphics/com.sun.javafx.application=ALL-UNNAMED" if:set="isJava9" unless:set="noJavaFX" />
 | 
|---|
| 353 |         </javadoc>
 | 
|---|
| 354 |     </target>
 | 
|---|
| 355 |     <target name="clean" depends="init-properties" description="Delete all build files">
 | 
|---|
| 356 |         <delete dir="${build.dir}"/>
 | 
|---|
| 357 |         <delete dir="${proj-build.dir}"/>
 | 
|---|
| 358 |         <delete dir="${script-build.dir}"/>
 | 
|---|
| 359 |         <delete dir="${checkstyle-build.dir}"/>
 | 
|---|
| 360 |         <delete dir="${dist.dir}"/>
 | 
|---|
| 361 |         <delete dir="${mapcss.dir}/parsergen"/>
 | 
|---|
| 362 |         <delete file="${src.dir}/org/w3/_2001/xmlschema/Adapter1.java"/>
 | 
|---|
| 363 |         <delete dir="${src.dir}/org/openstreetmap/josm/data/imagery/types"/>
 | 
|---|
| 364 |         <delete file="${epsg.output}"/>
 | 
|---|
| 365 |         <delete file="${pmd.dir}/cache"/>
 | 
|---|
| 366 |     </target>
 | 
|---|
| 367 |     <macrodef name="init-test-preferences">
 | 
|---|
| 368 |         <attribute name="testfamily"/>
 | 
|---|
| 369 |         <sequential>
 | 
|---|
| 370 |             <copy file="${test.dir}/config/preferences.template.xml" tofile="${test.dir}/config/@{testfamily}-josm.home/preferences.xml"/>
 | 
|---|
| 371 |             <replace file="${test.dir}/config/@{testfamily}-josm.home/preferences.xml" encoding="UTF-8" token="@OSM_USERNAME@" value="${osm.username}"/>
 | 
|---|
| 372 |             <replace file="${test.dir}/config/@{testfamily}-josm.home/preferences.xml" encoding="UTF-8" token="@OSM_PASSWORD@" value="${osm.password}"/>
 | 
|---|
| 373 |         </sequential>
 | 
|---|
| 374 |     </macrodef>
 | 
|---|
| 375 |     <target name="test-init" depends="init" description="Initialize the tests">
 | 
|---|
| 376 |         <mkdir dir="${test.dir}/build"/>
 | 
|---|
| 377 |         <mkdir dir="${test.dir}/build/unit"/>
 | 
|---|
| 378 |         <mkdir dir="${test.dir}/build/functional"/>
 | 
|---|
| 379 |         <mkdir dir="${test.dir}/build/performance"/>
 | 
|---|
| 380 |         <mkdir dir="${test.dir}/report"/>
 | 
|---|
| 381 |         <init-test-preferences testfamily="unit"/>
 | 
|---|
| 382 |         <init-test-preferences testfamily="functional"/>
 | 
|---|
| 383 |         <init-test-preferences testfamily="performance"/>
 | 
|---|
| 384 |         <path id="test.classpath">
 | 
|---|
| 385 |             <path refid="test.path"/>
 | 
|---|
| 386 |             <pathelement path="${build.dir}"/>
 | 
|---|
| 387 |             <pathelement path="${resources.dir}"/>
 | 
|---|
| 388 |         </path>
 | 
|---|
| 389 |         <ivy:retrieve log="download-only" pattern="${test.dir}/lib/[artifact].[ext]" conf="jmockit"/>
 | 
|---|
| 390 |         <ivy:retrieve log="download-only" pattern="${tools.dir}/[artifact].[ext]" conf="commonslang"/>
 | 
|---|
| 391 |         <ivy:retrieve log="download-only" pattern="${tools.dir}/[conf].[ext]" conf="jacocoant"/>
 | 
|---|
| 392 |         <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml" classpath="${tools.dir}/jacocoant.jar" />
 | 
|---|
| 393 |     </target>
 | 
|---|
| 394 |     <target name="test-clean" depends="init-properties" description="Delete all built test files">
 | 
|---|
| 395 |         <delete dir="${test.dir}/build"/>
 | 
|---|
| 396 |         <delete dir="${test.dir}/report"/>
 | 
|---|
| 397 |         <delete file="${test.dir}/jacoco.exec" />
 | 
|---|
| 398 |         <delete file="${test.dir}/jacocoIT.exec" />
 | 
|---|
| 399 |         <delete file="${test.dir}/config/unit-josm.home" failonerror="false"/>
 | 
|---|
| 400 |         <delete file="${test.dir}/config/functional-josm.home" failonerror="false"/>
 | 
|---|
| 401 |         <delete file="${test.dir}/config/performance-josm.home" failonerror="false"/>
 | 
|---|
| 402 |     </target>
 | 
|---|
| 403 |     <macrodef name="call-javac">
 | 
|---|
| 404 |         <attribute name="testfamily"/>
 | 
|---|
| 405 |         <element name="cp-elements"/>
 | 
|---|
| 406 |         <sequential>
 | 
|---|
| 407 |             <javac srcdir="${test.dir}/@{testfamily}" destdir="${test.dir}/build/@{testfamily}"
 | 
|---|
| 408 |                 release="${java.lang.version}" debug="on"
 | 
|---|
| 409 |                 includeantruntime="false" encoding="UTF-8">
 | 
|---|
| 410 |                 <compilerarg value="-Xlint:all"/>
 | 
|---|
| 411 |                 <compilerarg value="-Xlint:-path"/><!-- Suppress "bad path element .../xmpcore-6.0.6.jar: no such file or directory" warning, see https://github.com/drewnoakes/metadata-extractor/pull/483 -->
 | 
|---|
| 412 |                 <compilerarg value="-Xlint:-serial"/>
 | 
|---|
| 413 |                 <classpath>
 | 
|---|
| 414 |                     <cp-elements/>
 | 
|---|
| 415 |                 </classpath>
 | 
|---|
| 416 |             </javac>
 | 
|---|
| 417 |             <copy todir="${test.dir}/build/@{testfamily}/META-INF">
 | 
|---|
| 418 |               <fileset dir="${test.dir}/data/META-INF"/>
 | 
|---|
| 419 |             </copy>
 | 
|---|
| 420 |         </sequential>
 | 
|---|
| 421 |     </macrodef>
 | 
|---|
| 422 |     <target name="test-compile" depends="test-init,compile,extract-libraries,epsg,copy-resources" description="Compile all tests">
 | 
|---|
| 423 |         <call-javac testfamily="unit">
 | 
|---|
| 424 |             <cp-elements>
 | 
|---|
| 425 |                 <path refid="test.classpath"/>
 | 
|---|
| 426 |             </cp-elements>
 | 
|---|
| 427 |         </call-javac>
 | 
|---|
| 428 |         <call-javac testfamily="functional">
 | 
|---|
| 429 |             <cp-elements>
 | 
|---|
| 430 |                 <path refid="test.classpath"/>
 | 
|---|
| 431 |                 <pathelement path="${test.dir}/build/unit"/>
 | 
|---|
| 432 |             </cp-elements>
 | 
|---|
| 433 |         </call-javac>
 | 
|---|
| 434 |         <call-javac testfamily="performance">
 | 
|---|
| 435 |             <cp-elements>
 | 
|---|
| 436 |                 <path refid="test.classpath"/>
 | 
|---|
| 437 |                 <pathelement path="${test.dir}/build/unit"/>
 | 
|---|
| 438 |             </cp-elements>
 | 
|---|
| 439 |         </call-javac>
 | 
|---|
| 440 |     </target>
 | 
|---|
| 441 |     <macrodef name="call-junit">
 | 
|---|
| 442 |         <attribute name="testfamily"/>
 | 
|---|
| 443 |         <attribute name="testITsuffix" default=""/>
 | 
|---|
| 444 |         <attribute name="coverage" default="${coverageByDefault}"/>
 | 
|---|
| 445 |         <attribute name="includes" default="${default-junit@{testITsuffix}-includes}"/>
 | 
|---|
| 446 |         <attribute name="excludes" default="${default-junit@{testITsuffix}-excludes}"/>
 | 
|---|
| 447 |         <sequential>
 | 
|---|
| 448 |             <echo message="Running @{testfamily}@{testITsuffix} tests with JUnit"/>
 | 
|---|
| 449 |             <jacoco:agent destfile="${test.dir}/jacoco@{testITsuffix}.exec" enabled="@{coverage}" includes="${jacoco.includes}" dumponexit="true"
 | 
|---|
| 450 |                     inclbootstrapclasses="${jacoco.inclbootstrapclasses}" inclnolocationclasses="${jacoco.inclnolocationclasses}" property="jacocoagent@{testfamily}@{testITsuffix}" if:true="@{coverage}"/>
 | 
|---|
| 451 |             <junitlauncher printsummary="${junit.printsummary}" failureproperty="test.@{testfamily}@{testITsuffix}.failed">
 | 
|---|
| 452 |                 <classpath>
 | 
|---|
| 453 |                     <path refid="test.classpath"/>
 | 
|---|
| 454 |                     <pathelement path="${test.dir}/build/unit"/> <!-- required for functional/etc to have JOSMTestRules -->
 | 
|---|
| 455 |                     <pathelement path="${test.dir}/build/@{testfamily}"/>
 | 
|---|
| 456 |                 </classpath>
 | 
|---|
| 457 |                 <testclasses outputDir="${test.dir}/report">
 | 
|---|
| 458 |                     <fileset dir="${test.dir}/build/@{testfamily}" includes="@{includes}" excludes="@{excludes}"/>
 | 
|---|
| 459 |                         <fork>
 | 
|---|
| 460 |                             <jvmarg value="${jacocoagent@{testfamily}@{testITsuffix}}" if:set="jacocoagent@{testfamily}@{testITsuffix}" />
 | 
|---|
| 461 |                             <jvmarg value="-Dfile.encoding=UTF-8"/>
 | 
|---|
| 462 |                             <jvmarg value="-Djava.locale.providers=SPI,JRE,CLDR" if:set="isJava9" />
 | 
|---|
| 463 |                             <jvmarg value="-Djava.security.manager=allow" if:set="isJava17" />
 | 
|---|
| 464 |                             <jvmarg value="-javaagent:${test.dir}/lib/jmockit.jar"/>
 | 
|---|
| 465 |                             <jvmarg value="-Djunit.jupiter.extensions.autodetection.enabled=true"/>
 | 
|---|
| 466 |                             <jvmarg value="-Djunit.jupiter.execution.parallel.enabled=true"/>
 | 
|---|
| 467 |                             <jvmarg value="--add-modules" if:set="isJava9" unless:set="isJava11" />
 | 
|---|
| 468 |                             <jvmarg value="java.activation,java.se.ee" if:set="isJava9" unless:set="isJava11" />
 | 
|---|
| 469 |                             <jvmarg value="--add-exports" if:set="isJava9" unless:set="noJavaFX" />
 | 
|---|
| 470 |                             <jvmarg value="javafx.graphics/com.sun.javafx.application=ALL-UNNAMED" if:set="isJava9" unless:set="noJavaFX" />
 | 
|---|
| 471 |                             <jvmarg value="--add-exports" if:set="isJava9" unless:set="isJava11" />
 | 
|---|
| 472 |                             <jvmarg value="jdk.deploy/com.sun.deploy.config=ALL-UNNAMED" if:set="isJava9" unless:set="isJava11" />
 | 
|---|
| 473 |                             <jvmarg value="--add-opens" if:set="isJava9" />
 | 
|---|
| 474 |                             <jvmarg value="java.base/java.io=ALL-UNNAMED" if:set="isJava9" />
 | 
|---|
| 475 |                             <jvmarg value="--add-opens" if:set="isJava9" />
 | 
|---|
| 476 |                             <jvmarg value="java.base/java.lang=ALL-UNNAMED" if:set="isJava9" />
 | 
|---|
| 477 |                             <jvmarg value="--add-opens" if:set="isJava9" />
 | 
|---|
| 478 |                             <jvmarg value="java.base/java.nio=ALL-UNNAMED" if:set="isJava9" />
 | 
|---|
| 479 |                             <jvmarg value="--add-opens" if:set="isJava9" />
 | 
|---|
| 480 |                             <jvmarg value="java.base/java.text=ALL-UNNAMED" if:set="isJava9" />
 | 
|---|
| 481 |                             <jvmarg value="--add-opens" if:set="isJava9" />
 | 
|---|
| 482 |                             <jvmarg value="java.base/java.util=ALL-UNNAMED" if:set="isJava9" />
 | 
|---|
| 483 |                             <jvmarg value="--add-opens" if:set="isJava9" />
 | 
|---|
| 484 |                             <jvmarg value="java.base/jdk.internal.loader=ALL-UNNAMED" if:set="isJava9" />
 | 
|---|
| 485 |                             <jvmarg value="--add-opens" if:set="isJava9" />
 | 
|---|
| 486 |                             <jvmarg value="java.desktop/java.awt=ALL-UNNAMED" if:set="isJava9" />
 | 
|---|
| 487 |                         <jvmarg value="--add-opens" if:set="isJava9" />
 | 
|---|
| 488 |                             <jvmarg value="java.prefs/java.util.prefs=ALL-UNNAMED" if:set="isJava9" />
 | 
|---|
| 489 |                             <sysproperty key="josm.home" value="${test.dir}/config/@{testfamily}-josm.home"/>
 | 
|---|
| 490 |                             <sysproperty key="josm.test.data" value="${test.dir}/data"/>
 | 
|---|
| 491 |                             <sysproperty key="java.awt.headless" value="${test.headless}"/>
 | 
|---|
| 492 |                             <sysproperty key="java.security.manager" value="allow" if:set="isJava17" />
 | 
|---|
| 493 |                             <sysproperty key="glass.platform" value="Monocle"/>
 | 
|---|
| 494 |                             <sysproperty key="monocle.platform" value="Headless"/>
 | 
|---|
| 495 |                             <sysproperty key="prism.order" value="sw"/>
 | 
|---|
| 496 |                             <sysproperty key="suppressPermanentFailure" value="${suppressPermanentFailure}"/>
 | 
|---|
| 497 |                             <sysproperty key="junit.jupiter.execution.parallel.enabled" value="${junit.jupiter.execution.parallel.enabled}" if:set="junit.jupiter.execution.parallel.enabled"/>
 | 
|---|
| 498 |                             <sysproperty key="junit.jupiter.execution.parallel.mode.default" value="${junit.jupiter.execution.parallel.mode.default}" if:set="junit.jupiter.execution.parallel.mode.default"/>
 | 
|---|
| 499 |                             <sysproperty key="junit.jupiter.execution.parallel.mode.classes.default" value="${junit.jupiter.execution.parallel.mode.classes.default}" if:set="junit.jupiter.execution.parallel.mode.classes.default"/>
 | 
|---|
| 500 |                         </fork>
 | 
|---|
| 501 |                     <listener type="legacy-brief" sendSysOut="true" sendSysErr="true"/>
 | 
|---|
| 502 |                     <listener type="legacy-plain" />
 | 
|---|
| 503 |                     <listener type="legacy-xml" />
 | 
|---|
| 504 |                 </testclasses>
 | 
|---|
| 505 |             </junitlauncher>
 | 
|---|
| 506 |         </sequential>
 | 
|---|
| 507 |     </macrodef>
 | 
|---|
| 508 |     <target name="test" depends="test-compile" unless="test.notRequired"
 | 
|---|
| 509 |         description="Run unit and functional tests. OSM API (TEST) account shall be set with -Dosm.username and -Dosm.password">
 | 
|---|
| 510 |         <call-junit testfamily="unit"/>
 | 
|---|
| 511 |         <call-junit testfamily="functional"/>
 | 
|---|
| 512 |     </target>
 | 
|---|
| 513 |     <target name="test-hardfail" depends="test" description="Run 'test' target but abort if tests failed">
 | 
|---|
| 514 |         <fail message="'test' failed">
 | 
|---|
| 515 |             <condition>
 | 
|---|
| 516 |                 <or>
 | 
|---|
| 517 |                     <isset property="test.unit.failed"/>
 | 
|---|
| 518 |                     <isset property="test.functional.failed"/>
 | 
|---|
| 519 |                 </or>
 | 
|---|
| 520 |             </condition>
 | 
|---|
| 521 |         </fail>
 | 
|---|
| 522 |     </target>
 | 
|---|
| 523 |     <target name="test-unit" depends="test-compile" unless="test-unit.notRequired"
 | 
|---|
| 524 |         description="Run unit tests. OSM API (TEST) account shall be set with -Dosm.username and -Dosm.password">
 | 
|---|
| 525 |         <call-junit testfamily="unit"/>
 | 
|---|
| 526 |     </target>
 | 
|---|
| 527 |     <target name="test-unit-hardfail" depends="test-unit" description="Run 'test-unit' target but abort if tests failed">
 | 
|---|
| 528 |         <fail message="'test-unit' failed" if="test.unit.failed"/>
 | 
|---|
| 529 |     </target>
 | 
|---|
| 530 |     <target name="test-it" depends="test-compile,create-revision" unless="test-it.notRequired"
 | 
|---|
| 531 |         description="Run integration tests. OSM API (TEST) account shall be set with -Dosm.username and -Dosm.password">
 | 
|---|
| 532 |         <call-junit testfamily="unit" testITsuffix="IT"/>
 | 
|---|
| 533 |         <call-junit testfamily="functional" testITsuffix="IT"/>
 | 
|---|
| 534 |     </target>
 | 
|---|
| 535 |     <target name="test-it-hardfail" depends="test-it" description="Run 'test-it' target but abort if tests failed">
 | 
|---|
| 536 |         <fail message="'test-it' failed">
 | 
|---|
| 537 |             <condition>
 | 
|---|
| 538 |                 <or>
 | 
|---|
| 539 |                     <isset property="test.unitIT.failed"/>
 | 
|---|
| 540 |                     <isset property="test.functionalIT.failed"/>
 | 
|---|
| 541 |                 </or>
 | 
|---|
| 542 |             </condition>
 | 
|---|
| 543 |         </fail>
 | 
|---|
| 544 |     </target>
 | 
|---|
| 545 |     <target name="test-perf" depends="test-compile" unless="test-perf.notRequired"
 | 
|---|
| 546 |         description="Run performance tests. OSM API (TEST) account shall be set with -Dosm.username and -Dosm.password">
 | 
|---|
| 547 |         <call-junit testfamily="performance" coverage="false"/>
 | 
|---|
| 548 |     </target>
 | 
|---|
| 549 |     <target name="test-perf-hardfail" depends="test-perf" description="Run 'test-perf' target but abort if tests failed">
 | 
|---|
| 550 |         <fail message="'test-perf' failed" if="test.performance.failed"/>
 | 
|---|
| 551 |     </target>
 | 
|---|
| 552 |     <target name="test-html" depends="test, test-it, test-perf" description="Generate HTML, CSV and XML test reports">
 | 
|---|
| 553 |         <!-- May require additional ant dependencies like ant-trax package -->
 | 
|---|
| 554 |         <junitreport todir="${test.dir}/report">
 | 
|---|
| 555 |             <fileset dir="${test.dir}/report">
 | 
|---|
| 556 |                 <include name="TEST-*.xml"/>
 | 
|---|
| 557 |             </fileset>
 | 
|---|
| 558 |             <report todir="${test.dir}/report/html"/>
 | 
|---|
| 559 |         </junitreport>
 | 
|---|
| 560 |         <jacoco:report>
 | 
|---|
| 561 |             <executiondata>
 | 
|---|
| 562 |                 <fileset dir="${test.dir}" includes="*.exec"/>
 | 
|---|
| 563 |             </executiondata>
 | 
|---|
| 564 |             <structure name="JOSM Test Coverage">
 | 
|---|
| 565 |                 <classfiles>
 | 
|---|
| 566 |                     <fileset dir="${build.dir}" includes="org/openstreetmap/"/>
 | 
|---|
| 567 |                 </classfiles>
 | 
|---|
| 568 |                 <sourcefiles encoding="UTF-8">
 | 
|---|
| 569 |                     <fileset dir="${src.dir}" includes="org/openstreetmap/"/>
 | 
|---|
| 570 |                 </sourcefiles>
 | 
|---|
| 571 |             </structure>
 | 
|---|
| 572 |             <html destdir="${test.dir}/report/jacoco"/>
 | 
|---|
| 573 |             <xml destfile="${test.dir}/report/jacoco.xml"/>
 | 
|---|
| 574 |             <csv destfile="${test.dir}/report/jacoco.csv"/>
 | 
|---|
| 575 |         </jacoco:report>
 | 
|---|
| 576 |     </target>
 | 
|---|
| 577 |     <target name="dist-optimized" depends="dist" description="Build an optimized JOSM distribution file">
 | 
|---|
| 578 |         <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="proguard.classpath" conf="proguard"/>
 | 
|---|
| 579 |         <taskdef resource="proguard/ant/task.properties" classpathref="proguard.classpath"/>
 | 
|---|
| 580 |         <proguard>
 | 
|---|
| 581 |         -injars ${dist.jar}
 | 
|---|
| 582 |         -outjars ${dist-optimized.jar}
 | 
|---|
| 583 | 
 | 
|---|
| 584 |         -libraryjars ${java.home}/${java.library.dir}
 | 
|---|
| 585 | 
 | 
|---|
| 586 |         -dontoptimize
 | 
|---|
| 587 |         -dontobfuscate
 | 
|---|
| 588 |         -dontwarn org.jetbrains.annotations.**
 | 
|---|
| 589 | 
 | 
|---|
| 590 |         # These options probably are not necessary (and make processing a bit slower)
 | 
|---|
| 591 |         -dontskipnonpubliclibraryclasses
 | 
|---|
| 592 |         -dontskipnonpubliclibraryclassmembers
 | 
|---|
| 593 | 
 | 
|---|
| 594 |         -keepclasseswithmembers public class org.openstreetmap.josm.gui.MainApplication {
 | 
|---|
| 595 |             public static void main(java.lang.String[]);
 | 
|---|
| 596 |         }
 | 
|---|
| 597 | 
 | 
|---|
| 598 |         -keep class * extends org.openstreetmap.josm.io.FileImporter
 | 
|---|
| 599 |         -keep class * extends org.openstreetmap.josm.io.FileExporter
 | 
|---|
| 600 |         -keep class org.openstreetmap.josm.actions.search.SearchCompiler$Never
 | 
|---|
| 601 |         -keep class org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory$PseudoClasses {
 | 
|---|
| 602 |             static boolean *(org.openstreetmap.josm.gui.mappaint.Environment);
 | 
|---|
| 603 |         }
 | 
|---|
| 604 | 
 | 
|---|
| 605 |         -keepclassmembers enum  * {
 | 
|---|
| 606 |             public static **[] values();
 | 
|---|
| 607 |             public static ** valueOf(java.lang.String);
 | 
|---|
| 608 |         }
 | 
|---|
| 609 | 
 | 
|---|
| 610 |         # Keep unused public classes and methods (needed for plugins)
 | 
|---|
| 611 |         -keep public class * {
 | 
|---|
| 612 |             public protected *;
 | 
|---|
| 613 |         }
 | 
|---|
| 614 | 
 | 
|---|
| 615 |         # Keep serialization code
 | 
|---|
| 616 |         -keepclassmembers class * implements java.io.Serializable {
 | 
|---|
| 617 |             static final long serialVersionUID;
 | 
|---|
| 618 |             private static final java.io.ObjectStreamField[] serialPersistentFields;
 | 
|---|
| 619 |             private void writeObject(java.io.ObjectOutputStream);
 | 
|---|
| 620 |             private void readObject(java.io.ObjectInputStream);
 | 
|---|
| 621 |             java.lang.Object writeReplace();
 | 
|---|
| 622 |             java.lang.Object readResolve();
 | 
|---|
| 623 |         }
 | 
|---|
| 624 | 
 | 
|---|
| 625 |         # Disable annoying [proguard] Note: the configuration keeps the entry point '...', but not the descriptor class '...'.
 | 
|---|
| 626 |         # This note should not be a problem as we don't use obfuscation
 | 
|---|
| 627 |         -dontnote
 | 
|---|
| 628 |         </proguard>
 | 
|---|
| 629 |     </target>
 | 
|---|
| 630 |     <target name="dist-optimized-report" depends="dist-optimized">
 | 
|---|
| 631 |         <!-- generate difference report between optimized jar and normal one -->
 | 
|---|
| 632 |         <exec executable="perl" dir="${basedir}">
 | 
|---|
| 633 |             <arg value="${tools.dir}/japicc/japi-compliance-checker.pl"/>
 | 
|---|
| 634 |             <arg value="--lib=JOSM"/>
 | 
|---|
| 635 |             <arg value="--keep-internal"/>
 | 
|---|
| 636 |             <arg value="--v1=${version.entry.commit.revision}"/>
 | 
|---|
| 637 |             <arg value="--v2=${version.entry.commit.revision}-optimized"/>
 | 
|---|
| 638 |             <arg value="--report-path=${dist.dir}/compat_report.html"/>
 | 
|---|
| 639 |             <arg value="${dist.jar}"/>
 | 
|---|
| 640 |             <arg value="${dist-optimized.jar}"/>
 | 
|---|
| 641 |         </exec>
 | 
|---|
| 642 |     </target>
 | 
|---|
| 643 |     <target name="check-plugins" depends="dist-optimized" description="Check of plugins binary compatibility" unless="isJava11">
 | 
|---|
| 644 |         <local name="dir"/>
 | 
|---|
| 645 |         <local name="plugins"/>
 | 
|---|
| 646 |         <property name="dir" value="plugin-check"/>
 | 
|---|
| 647 |         <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="animal.classpath" conf="animal"/>
 | 
|---|
| 648 |         <typedef uri="antlib:org.codehaus.mojo.animal_sniffer">
 | 
|---|
| 649 |             <classpath refid="animal.classpath"/>
 | 
|---|
| 650 |         </typedef>
 | 
|---|
| 651 |         <delete dir="${dir}" failonerror="false"/>
 | 
|---|
| 652 |         <mkdir dir="${dir}"/>
 | 
|---|
| 653 |         <!-- List of deprecated plugins -->
 | 
|---|
| 654 |         <loadfile property="deprecated-plugins" srcFile="${src.dir}/org/openstreetmap/josm/plugins/PluginHandler.java">
 | 
|---|
| 655 |             <filterchain>
 | 
|---|
| 656 |                 <linecontains>
 | 
|---|
| 657 |                     <contains value="new DeprecatedPlugin("/>
 | 
|---|
| 658 |                 </linecontains>
 | 
|---|
| 659 |                 <tokenfilter>
 | 
|---|
| 660 |                     <replaceregex pattern=".*new DeprecatedPlugin\("(.+?)".*" replace="\1|" flags="gi"/>
 | 
|---|
| 661 |                 </tokenfilter>
 | 
|---|
| 662 |                 <striplinebreaks/>
 | 
|---|
| 663 |                 <tokenfilter>
 | 
|---|
| 664 |                     <replaceregex pattern="\|$" replace="" flags="gi"/>
 | 
|---|
| 665 |                 </tokenfilter>
 | 
|---|
| 666 |             </filterchain>
 | 
|---|
| 667 |         </loadfile>
 | 
|---|
| 668 |         <!-- Download list of plugins -->
 | 
|---|
| 669 |         <loadresource property="plugins">
 | 
|---|
| 670 |             <url url="https://josm.openstreetmap.de/plugin"/>
 | 
|---|
| 671 |             <filterchain>
 | 
|---|
| 672 |                 <linecontainsregexp negate="true">
 | 
|---|
| 673 |                     <regexp pattern="^\t.*"/>
 | 
|---|
| 674 |                 </linecontainsregexp>
 | 
|---|
| 675 |                 <linecontainsregexp negate="true">
 | 
|---|
| 676 |                     <regexp pattern="${deprecated-plugins}"/>
 | 
|---|
| 677 |                 </linecontainsregexp>
 | 
|---|
| 678 |                 <linecontainsregexp negate="true" unless:set="isJava10">
 | 
|---|
| 679 |                     <!-- Skip javafx on Java 8/9, built for Java 10+ only -->
 | 
|---|
| 680 |                     <regexp pattern="javafx.*"/>
 | 
|---|
| 681 |                 </linecontainsregexp>
 | 
|---|
| 682 |                 <linecontainsregexp negate="true" unless:set="isJava11">
 | 
|---|
| 683 |                     <!-- Skip http2 on Java 8/9/10, built for Java 11+ only -->
 | 
|---|
| 684 |                     <regexp pattern="http2.*"/>
 | 
|---|
| 685 |                 </linecontainsregexp>
 | 
|---|
| 686 |                 <tokenfilter>
 | 
|---|
| 687 |                     <replaceregex pattern="^.*;" replace="" flags="gi"/>
 | 
|---|
| 688 |                 </tokenfilter>
 | 
|---|
| 689 |             </filterchain>
 | 
|---|
| 690 |         </loadresource>
 | 
|---|
| 691 |         <!-- Delete files that are not in plugin list (like old plugins) -->
 | 
|---|
| 692 |         <loadresource property="file-list">
 | 
|---|
| 693 |             <propertyresource name="plugins"/>
 | 
|---|
| 694 |             <filterchain>
 | 
|---|
| 695 |                 <tokenfilter>
 | 
|---|
| 696 |                     <replaceregex pattern="^.*/(.*)$" replace="\1\|" flags=""/>
 | 
|---|
| 697 |                 </tokenfilter>
 | 
|---|
| 698 |                 <striplinebreaks/>
 | 
|---|
| 699 |                 <tokenfilter>
 | 
|---|
| 700 |                     <replaceregex pattern="\|$" replace="" flags="gi"/>
 | 
|---|
| 701 |                 </tokenfilter>
 | 
|---|
| 702 |             </filterchain>
 | 
|---|
| 703 |         </loadresource>
 | 
|---|
| 704 |         <delete>
 | 
|---|
| 705 |             <restrict>
 | 
|---|
| 706 |                 <fileset dir="${dir}"/>
 | 
|---|
| 707 |                 <not>
 | 
|---|
| 708 |                     <name regex="${file-list}"/>
 | 
|---|
| 709 |                 </not>
 | 
|---|
| 710 |             </restrict>
 | 
|---|
| 711 |         </delete>
 | 
|---|
| 712 |         <!-- Download plugins -->
 | 
|---|
| 713 |         <copy todir="${dir}" flatten="true" verbose="true" failonerror="false">
 | 
|---|
| 714 |             <resourcelist>
 | 
|---|
| 715 |                 <string value="${plugins}"/>
 | 
|---|
| 716 |             </resourcelist>
 | 
|---|
| 717 |         </copy>
 | 
|---|
| 718 |         <!-- Check plugins -->
 | 
|---|
| 719 |         <as:build-signatures destfile="${dir}/api.sig">
 | 
|---|
| 720 |             <path>
 | 
|---|
| 721 |                 <fileset file="${dist-optimized.jar}"/>
 | 
|---|
| 722 |                 <fileset file="${java.home}/lib/rt.jar" unless:set="isJava9"/>
 | 
|---|
| 723 |                 <fileset file="${java.home}/lib/jce.jar" unless:set="isJava9"/>
 | 
|---|
| 724 |                 <fileset file="${java.home}/lib/ext/jfxrt.jar" unless:set="isJava9"/>
 | 
|---|
| 725 |                 <fileset dir="${java.home}/jmods" if:set="isJava9"/>
 | 
|---|
| 726 |                 <fileset dir="/usr/share/openjfx/lib" unless:set="isJava9"/>
 | 
|---|
| 727 |             </path>
 | 
|---|
| 728 |         </as:build-signatures>
 | 
|---|
| 729 |         <as:check-signature signature="${dir}/api.sig" failonerror="false">
 | 
|---|
| 730 |             <ignore classname="afu.*"/>
 | 
|---|
| 731 |             <ignore classname="android.*"/>
 | 
|---|
| 732 |             <ignore classname="au.*"/>
 | 
|---|
| 733 |             <ignore classname="com.*"/>
 | 
|---|
| 734 |             <ignore classname="de.*"/>
 | 
|---|
| 735 |             <ignore classname="edu.*"/>
 | 
|---|
| 736 |             <ignore classname="groovy.*"/>
 | 
|---|
| 737 |             <ignore classname="io.*"/>
 | 
|---|
| 738 |             <ignore classname="it.*"/>
 | 
|---|
| 739 |             <ignore classname="java.lang.invoke.MethodHandle"/>
 | 
|---|
| 740 |             <ignore classname="java.nio.ByteBuffer"/>
 | 
|---|
| 741 |             <ignore classname="java.nio.FloatBuffer"/>
 | 
|---|
| 742 |             <ignore classname="java.util.list.kotlin.*"/>
 | 
|---|
| 743 |             <ignore classname="javax.*"/>
 | 
|---|
| 744 |             <ignore classname="jdk.swing.interop.*"/>
 | 
|---|
| 745 |             <ignore classname="jogamp.*"/>
 | 
|---|
| 746 |             <ignore classname="junit.*"/>
 | 
|---|
| 747 |             <ignore classname="kdu_jni.*"/>
 | 
|---|
| 748 |             <ignore classname="kotlin.*"/>
 | 
|---|
| 749 |             <ignore classname="net.*"/>
 | 
|---|
| 750 |             <ignore classname="netscape.*"/>
 | 
|---|
| 751 |             <ignore classname="nu.*"/>
 | 
|---|
| 752 |             <ignore classname="oracle.*"/>
 | 
|---|
| 753 |             <ignore classname="org.apache.*"/>
 | 
|---|
| 754 |             <ignore classname="org.bouncycastle.*"/>
 | 
|---|
| 755 |             <ignore classname="org.checkerframework.*"/>
 | 
|---|
| 756 |             <ignore classname="org.codehaus.*"/>
 | 
|---|
| 757 |             <ignore classname="org.conscrypt.*"/>
 | 
|---|
| 758 |             <ignore classname="org.dom4j.*"/>
 | 
|---|
| 759 |             <ignore classname="org.eclipse.*"/>
 | 
|---|
| 760 |             <ignore classname="org.ejml.*"/>
 | 
|---|
| 761 |             <ignore classname="org.fusesource.*"/>
 | 
|---|
| 762 |             <ignore classname="org.gdal.*"/>
 | 
|---|
| 763 |             <ignore classname="org.geotools.data.h2.*"/>
 | 
|---|
| 764 |             <ignore classname="org.geotools.gce.imagemosaic.*"/>
 | 
|---|
| 765 |             <ignore classname="org.hibernate.*"/>
 | 
|---|
| 766 |             <ignore classname="org.hsqldb.*"/>
 | 
|---|
| 767 |             <ignore classname="org.ibex.*"/>
 | 
|---|
| 768 |             <ignore classname="org.iso_relax.*"/>
 | 
|---|
| 769 |             <ignore classname="org.jaitools.*"/>
 | 
|---|
| 770 |             <ignore classname="org.jaxen.*"/>
 | 
|---|
| 771 |             <ignore classname="org.jboss.*"/>
 | 
|---|
| 772 |             <ignore classname="org.jctools.*"/>
 | 
|---|
| 773 |             <ignore classname="org.jdom.*"/>
 | 
|---|
| 774 |             <ignore classname="org.jdom2.*"/>
 | 
|---|
| 775 |             <ignore classname="org.jfree.*"/>
 | 
|---|
| 776 |             <ignore classname="org.jgraph.*"/>
 | 
|---|
| 777 |             <ignore classname="org.joda.*"/>
 | 
|---|
| 778 |             <ignore classname="org.json.*"/>
 | 
|---|
| 779 |             <ignore classname="org.junit.*"/>
 | 
|---|
| 780 |             <ignore classname="org.jvnet.*"/>
 | 
|---|
| 781 |             <ignore classname="org.kxml2.*"/>
 | 
|---|
| 782 |             <ignore classname="org.locationtech.*"/>
 | 
|---|
| 783 |             <ignore classname="org.mozilla.*"/>
 | 
|---|
| 784 |             <ignore classname="org.objectweb.*"/>
 | 
|---|
| 785 |             <ignore classname="org.opentest4j.*"/>
 | 
|---|
| 786 |             <ignore classname="org.osgi.*"/>
 | 
|---|
| 787 |             <ignore classname="org.postgresql.*"/>
 | 
|---|
| 788 |             <ignore classname="org.python.*"/>
 | 
|---|
| 789 |             <ignore classname="org.seasar.*"/>
 | 
|---|
| 790 |             <ignore classname="org.slf4j.*"/>
 | 
|---|
| 791 |             <ignore classname="org.springframework.*"/>
 | 
|---|
| 792 |             <ignore classname="org.testng.*"/>
 | 
|---|
| 793 |             <ignore classname="org.w3c.*"/>
 | 
|---|
| 794 |             <ignore classname="org.zeromq.*"/>
 | 
|---|
| 795 |             <ignore classname="waffle.*"/>
 | 
|---|
| 796 |             <!-- plugins used by another ones -->
 | 
|---|
| 797 |             <ignore classname="org.openstreetmap.josm.plugins.geotools.*"/>
 | 
|---|
| 798 |             <ignore classname="org.openstreetmap.josm.plugins.jaxb.*"/>
 | 
|---|
| 799 |             <ignore classname="org.openstreetmap.josm.plugins.jna.*"/>
 | 
|---|
| 800 |             <ignore classname="org.openstreetmap.josm.plugins.jts.*"/>
 | 
|---|
| 801 |             <ignore classname="org.openstreetmap.josm.plugins.log4j.*"/>
 | 
|---|
| 802 |             <ignore classname="org.openstreetmap.josm.plugins.openjfx.*"/>
 | 
|---|
| 803 |             <ignore classname="org.openstreetmap.josm.plugins.utilsplugin2.*"/>
 | 
|---|
| 804 |             <ignore classname="sun.*"/>
 | 
|---|
| 805 |             <path path="${dir}"/>
 | 
|---|
| 806 |         </as:check-signature>
 | 
|---|
| 807 |     </target>
 | 
|---|
| 808 | 
 | 
|---|
| 809 |     <target name="script-compile" depends="test-compile" description="Compile all scripts">
 | 
|---|
| 810 |         <javac sourcepath="" srcdir="${base.dir}/scripts" failonerror="true" includes="*.java"
 | 
|---|
| 811 |                destdir="${script-build.dir}" release="${java.lang.version}" debug="on"
 | 
|---|
| 812 |                includeantruntime="false" encoding="UTF-8">
 | 
|---|
| 813 |             <classpath>
 | 
|---|
| 814 |                 <pathelement path="${build.dir}"/>
 | 
|---|
| 815 |                 <pathelement path="${test.dir}/build/unit"/>
 | 
|---|
| 816 |                 <pathelement path="${commons-lang3.jar}"/>
 | 
|---|
| 817 |             </classpath>
 | 
|---|
| 818 |         </javac>
 | 
|---|
| 819 |     </target>
 | 
|---|
| 820 | 
 | 
|---|
| 821 |     <macrodef name="_taginfo">
 | 
|---|
| 822 |         <attribute name="type"/>
 | 
|---|
| 823 |         <attribute name="output"/>
 | 
|---|
| 824 |         <sequential>
 | 
|---|
| 825 |             <echo message="Generating Taginfo for type @{type} to @{output}"/>
 | 
|---|
| 826 |             <java classname="TagInfoExtract" failonerror="true" fork="false">
 | 
|---|
| 827 |                 <sysproperty key="java.awt.headless" value="true"/>
 | 
|---|
| 828 |                 <classpath>
 | 
|---|
| 829 |                     <pathelement path="${build.dir}"/>
 | 
|---|
| 830 |                     <pathelement path="${script-build.dir}"/>
 | 
|---|
| 831 |                     <pathelement path="${commons-lang3.jar}"/>
 | 
|---|
| 832 |                 </classpath>
 | 
|---|
| 833 |                 <arg value="--type"/>
 | 
|---|
| 834 |                 <arg value="@{type}"/>
 | 
|---|
| 835 |                 <arg value="--noexit"/>
 | 
|---|
| 836 |                 <arg value="--imgurlprefix"/>
 | 
|---|
| 837 |                 <arg value="http://josm.openstreetmap.de/download/taginfo/taginfo-img"/>
 | 
|---|
| 838 |                 <arg value="--output"/>
 | 
|---|
| 839 |                 <arg value="@{output}"/>
 | 
|---|
| 840 |             </java>
 | 
|---|
| 841 |         </sequential>
 | 
|---|
| 842 |     </macrodef>
 | 
|---|
| 843 | 
 | 
|---|
| 844 |     <target name="taginfo" depends="script-compile" description="Generate project files Taginfo">
 | 
|---|
| 845 |         <_taginfo type="mappaint" output="taginfo_style.json"/>
 | 
|---|
| 846 |         <_taginfo type="presets" output="taginfo_presets.json"/>
 | 
|---|
| 847 |         <_taginfo type="external_presets" output="taginfo_external_presets.json"/>
 | 
|---|
| 848 |     </target>
 | 
|---|
| 849 | 
 | 
|---|
| 850 |     <target name="imageryindex" depends="script-compile"  description="Check editor imagery difference">
 | 
|---|
| 851 |         <echo message="Checking editor imagery difference"/>
 | 
|---|
| 852 |         <java classname="SyncEditorLayerIndex" failonerror="true" fork="false">
 | 
|---|
| 853 |             <classpath>
 | 
|---|
| 854 |                 <pathelement path="${build.dir}"/>
 | 
|---|
| 855 |                 <pathelement path="${script-build.dir}"/>
 | 
|---|
| 856 |                 <pathelement path="${commons-lang3.jar}"/>
 | 
|---|
| 857 |             </classpath>
 | 
|---|
| 858 |             <arg value="--noeli"/>
 | 
|---|
| 859 |             <arg value="-p"/>
 | 
|---|
| 860 |             <arg value="imagery_eliout.imagery.xml"/>
 | 
|---|
| 861 |             <arg value="-q"/>
 | 
|---|
| 862 |             <arg value="imagery_josmout.imagery.xml"/>
 | 
|---|
| 863 |         </java>
 | 
|---|
| 864 |     </target>
 | 
|---|
| 865 | 
 | 
|---|
| 866 |     <target name="imageryindexdownload" description="Download and check editor imagery">
 | 
|---|
| 867 |         <exec append="false" executable="wget" failifexecutionfails="true">
 | 
|---|
| 868 |             <arg value="https://josm.openstreetmap.de/maps"/>
 | 
|---|
| 869 |             <arg value="-O"/>
 | 
|---|
| 870 |             <arg value="imagery_josm.imagery.xml"/>
 | 
|---|
| 871 |             <arg value="--unlink"/>
 | 
|---|
| 872 |         </exec>
 | 
|---|
| 873 |         <exec append="false" executable="wget" failifexecutionfails="true">
 | 
|---|
| 874 |             <arg value="https://josm.openstreetmap.de/wiki/ImageryCompareIgnores?format=txt"/>
 | 
|---|
| 875 |             <arg value="-O"/>
 | 
|---|
| 876 |             <arg value="imagery_josm.ignores.txt"/>
 | 
|---|
| 877 |             <arg value="--unlink"/>
 | 
|---|
| 878 |         </exec>
 | 
|---|
| 879 |         <exec append="false" executable="wget" failifexecutionfails="true">
 | 
|---|
| 880 |             <arg value="https://raw.githubusercontent.com/osmlab/editor-layer-index/gh-pages/imagery.geojson"/>
 | 
|---|
| 881 |             <arg value="-O"/>
 | 
|---|
| 882 |             <arg value="imagery_eli.geojson"/>
 | 
|---|
| 883 |             <arg value="--unlink"/>
 | 
|---|
| 884 |         </exec>
 | 
|---|
| 885 |         <antcall target="imageryindex"/>
 | 
|---|
| 886 |     </target>
 | 
|---|
| 887 | 
 | 
|---|
| 888 |     <target name="checkstyle-compile" depends="init" description="Compile Checkstyle rules">
 | 
|---|
| 889 |         <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="checkstyle.classpath" conf="checkstyle"/>
 | 
|---|
| 890 |         <mkdir dir="${checkstyle-build.dir}"/>
 | 
|---|
| 891 |         <javac sourcepath="" srcdir="${checkstyle.dir}/src" failonerror="true"
 | 
|---|
| 892 |             destdir="${checkstyle-build.dir}" release="${java.lang.version}" debug="on"
 | 
|---|
| 893 |             includeantruntime="false"
 | 
|---|
| 894 |             encoding="UTF-8" classpathref="checkstyle.classpath">
 | 
|---|
| 895 |         </javac>
 | 
|---|
| 896 |     </target>
 | 
|---|
| 897 |     <target name="checkstyle-changed" depends="checkstyle-compile" description="Run Checkstyle on SVN/Git-changed source files">
 | 
|---|
| 898 |         <exec append="false" osfamily="unix" executable="bash" failifexecutionfails="true">
 | 
|---|
| 899 |             <arg value="-c"/>
 | 
|---|
| 900 |             <arg value="(git ls-files src test --modified 2>/dev/null || svn status -q --ignore-externals src test) | grep -o '\(src\|test\)/.*' | xargs java -cp '${toString:checkstyle.classpath}:${checkstyle-build.dir}' com.puppycrawl.tools.checkstyle.Main -c ${checkstyle.dir}/josm_checks.xml | sed -e 's:\([^ ]*\) [^:]*/\([^:/]*.java\:[^:]*\):(\2)\1:'"/>
 | 
|---|
| 901 |         </exec>
 | 
|---|
| 902 |         <exec append="false" osfamily="windows" executable="powershell" failifexecutionfails="true">
 | 
|---|
| 903 |             <arg value="/c"/>
 | 
|---|
| 904 |             <arg value="svn status -q --ignore-externals src test | ForEach-Object {java -cp '${toString:checkstyle.classpath};${checkstyle-build.dir}' com.puppycrawl.tools.checkstyle.Main -c ${checkstyle.dir}/josm_checks.xml $_.split(' ')[7]}"/>
 | 
|---|
| 905 |         </exec>
 | 
|---|
| 906 |     </target>
 | 
|---|
| 907 |     <target name="checkstyle" depends="checkstyle-compile" description="Run Checkstyle on the source files">
 | 
|---|
| 908 |         <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties">
 | 
|---|
| 909 |             <classpath refid="checkstyle.classpath"/>
 | 
|---|
| 910 |             <classpath path="${checkstyle-build.dir}"/>
 | 
|---|
| 911 |         </taskdef>
 | 
|---|
| 912 |         <checkstyle config="${checkstyle.dir}/josm_checks.xml">
 | 
|---|
| 913 |             <fileset dir="${base.dir}/src/org/openstreetmap/josm" includes="**/*.java"
 | 
|---|
| 914 |                 excludes="gui/mappaint/mapcss/parsergen/*.java"/>
 | 
|---|
| 915 |             <fileset dir="${base.dir}/test" includes="**/*.java"/>
 | 
|---|
| 916 |             <fileset dir="${base.dir}/scripts" includes="**/*.java"/>
 | 
|---|
| 917 |             <formatter type="plain"/>
 | 
|---|
| 918 |             <formatter type="xml" toFile="checkstyle-josm.xml"/>
 | 
|---|
| 919 |         </checkstyle>
 | 
|---|
| 920 |     </target>
 | 
|---|
| 921 | 
 | 
|---|
| 922 |     <target name="spotbugs" depends="dist" description="Run SpotBugs on the source files">
 | 
|---|
| 923 |         <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="spotbugs.classpath" conf="spotbugs"/>
 | 
|---|
| 924 |         <taskdef name="spotbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpathref="spotbugs.classpath"/>
 | 
|---|
| 925 |         <spotbugs output="xml"
 | 
|---|
| 926 |                 outputFile="spotbugs-josm.xml"
 | 
|---|
| 927 |                 sourcePath="${src.dir}"
 | 
|---|
| 928 |                 classpath="${toString:spotbugs.classpath}"
 | 
|---|
| 929 |                 pluginList=""
 | 
|---|
| 930 |                 excludeFilter="${spotbugs.dir}/josm-filter.xml"
 | 
|---|
| 931 |                 onlyAnalyze="org.openstreetmap.josm.-"
 | 
|---|
| 932 |                 effort="max"
 | 
|---|
| 933 |                 reportLevel="low"
 | 
|---|
| 934 |                 >
 | 
|---|
| 935 |             <class location="${dist.jar}" />
 | 
|---|
| 936 |         </spotbugs>
 | 
|---|
| 937 |     </target>
 | 
|---|
| 938 | 
 | 
|---|
| 939 |     <target name="pmd" depends="init" description="Run PMD on the source files">
 | 
|---|
| 940 |         <ivy:cachepath log="download-only" file="${tools.ivy}" pathid="pmd.classpath" conf="pmd"/>
 | 
|---|
| 941 |         <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath"/>
 | 
|---|
| 942 |         <pmd shortFilenames="true" cacheLocation="${pmd.dir}/cache" encoding="UTF-8">
 | 
|---|
| 943 |             <sourceLanguage name="java" version="${java.lang.version}" />
 | 
|---|
| 944 |             <ruleset>${pmd.dir}/josm-ruleset.xml</ruleset>
 | 
|---|
| 945 |             <formatter type="text" toConsole="true" />
 | 
|---|
| 946 |             <formatter type="xml" toFile="pmd-josm.xml">
 | 
|---|
| 947 |                 <param name="encoding" value="UTF-8" />
 | 
|---|
| 948 |             </formatter>
 | 
|---|
| 949 |             <fileset dir="${src.dir}">
 | 
|---|
| 950 |                 <include name="org/openstreetmap/josm/**/*.java"/>
 | 
|---|
| 951 |                 <exclude name="org/openstreetmap/josm/gui/mappaint/mapcss/parsergen/*.java" />
 | 
|---|
| 952 |             </fileset>
 | 
|---|
| 953 |             <fileset dir="${base.dir}/scripts" includes="**/*.java"/>
 | 
|---|
| 954 |         </pmd>
 | 
|---|
| 955 |     </target>
 | 
|---|
| 956 | 
 | 
|---|
| 957 |     <target name="run" depends="dist" description="Run JOSM">
 | 
|---|
| 958 |         <java jar="${dist.jar}" fork="true">
 | 
|---|
| 959 |             <arg value="--set=expert=true"/>
 | 
|---|
| 960 |             <arg value="--set=iso.dates=true"/>
 | 
|---|
| 961 |             <jvmarg value="-Djosm.home=/tmp/.josm/"/>
 | 
|---|
| 962 |         </java>
 | 
|---|
| 963 |     </target>
 | 
|---|
| 964 |     <target name="epsg-compile" depends="init"
 | 
|---|
| 965 |             description="Compile build script for generating projection list">
 | 
|---|
| 966 |         <property name="proj-classpath" location="${build.dir}"/>
 | 
|---|
| 967 |         <mkdir dir="${proj-build.dir}"/>
 | 
|---|
| 968 |         <javac sourcepath="" srcdir="${base.dir}/scripts" failonerror="true" includes="BuildProjectionDefinitions.java"
 | 
|---|
| 969 |             destdir="${proj-build.dir}" release="${java.lang.version}" debug="on"
 | 
|---|
| 970 |             includeantruntime="false"
 | 
|---|
| 971 |             encoding="UTF-8" classpath="${proj-classpath}">
 | 
|---|
| 972 |         </javac>
 | 
|---|
| 973 |     </target>
 | 
|---|
| 974 |     <target name="epsg" unless="epsg.notRequired" depends="epsg-compile"
 | 
|---|
| 975 |             description="Generate projection list">
 | 
|---|
| 976 |         <touch file="${epsg.output}" mkdirs="true"/>
 | 
|---|
| 977 |         <java classname="BuildProjectionDefinitions" failonerror="true" fork="true">
 | 
|---|
| 978 |             <sysproperty key="java.awt.headless" value="true"/>
 | 
|---|
| 979 |             <classpath>
 | 
|---|
| 980 |                 <pathelement path="${resources.dir}"/>
 | 
|---|
| 981 |                 <pathelement path="${proj-classpath}"/>
 | 
|---|
| 982 |                 <pathelement path="${proj-build.dir}"/>
 | 
|---|
| 983 |             </classpath>
 | 
|---|
| 984 |             <arg value="${base.dir}"/>
 | 
|---|
| 985 |         </java>
 | 
|---|
| 986 |     </target>
 | 
|---|
| 987 |     <target name="update-proj-files" depends="test-compile"
 | 
|---|
| 988 |             description="Update projection test files after an update of projection definitions">
 | 
|---|
| 989 |         <java classname="org.openstreetmap.josm.data.projection.ProjectionRefTest" failonerror="true" fork="true">
 | 
|---|
| 990 |             <classpath>
 | 
|---|
| 991 |                 <path refid="test.classpath"/>
 | 
|---|
| 992 |                 <pathelement path="${test.dir}/build/unit"/>
 | 
|---|
| 993 |             </classpath>
 | 
|---|
| 994 |         </java>
 | 
|---|
| 995 |         <java classname="org.openstreetmap.josm.data.projection.ProjectionRegressionTest" failonerror="true" fork="true">
 | 
|---|
| 996 |             <classpath>
 | 
|---|
| 997 |                 <path refid="test.classpath"/>
 | 
|---|
| 998 |                 <pathelement path="${test.dir}/build/unit"/>
 | 
|---|
| 999 |             </classpath>
 | 
|---|
| 1000 |         </java>
 | 
|---|
| 1001 |     </target>
 | 
|---|
| 1002 |     <target name="jdeps" depends="compile" description="Generate jdeps dependency graph">
 | 
|---|
| 1003 |         <delete dir="${modules.dir}"/>
 | 
|---|
| 1004 |         <mkdir dir="${modules.dir}"/>
 | 
|---|
| 1005 |         <!-- JOSM only -->
 | 
|---|
| 1006 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/josm-actions.jar" includes="org/openstreetmap/josm/actions/**/*.class"/>
 | 
|---|
| 1007 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/josm-cli.jar" includes="org/openstreetmap/josm/cli/**/*.class"/>
 | 
|---|
| 1008 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/josm-command.jar" includes="org/openstreetmap/josm/command/**/*.class"/>
 | 
|---|
| 1009 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/josm-data.jar" includes="org/openstreetmap/josm/data/**/*.class"/>
 | 
|---|
| 1010 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/josm-gui.jar" includes="org/openstreetmap/josm/gui/**/*.class"/>
 | 
|---|
| 1011 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/josm-io.jar" includes="org/openstreetmap/josm/io/**/*.class"/>
 | 
|---|
| 1012 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/josm-plugins.jar" includes="org/openstreetmap/josm/plugins/**/*.class"/>
 | 
|---|
| 1013 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/josm-spi.jar" includes="org/openstreetmap/josm/spi/**/*.class"/>
 | 
|---|
| 1014 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/josm-tools.jar" includes="org/openstreetmap/josm/tools/**/*.class"/>
 | 
|---|
| 1015 |         <exec executable="jdeps" dir="${modules.dir}">
 | 
|---|
| 1016 |             <arg line="-f 'java.*|org.xml.*|org.w3c.*|sun.*|com.*|oauth.*|org.apache.*|org.glassfish.*|org.openstreetmap.gui.*'"/>
 | 
|---|
| 1017 |             <arg line="-dotoutput dots *.jar"/>
 | 
|---|
| 1018 |         </exec>
 | 
|---|
| 1019 |         <exec executable="dot" dir="${modules.dir}/dots">
 | 
|---|
| 1020 |             <arg line="-O -Tpng summary.dot"/>
 | 
|---|
| 1021 |         </exec>
 | 
|---|
| 1022 |         <move file="${modules.dir}/dots/summary.dot.png" tofile="${modules.dir}/josm-without-dependencies.png"/>
 | 
|---|
| 1023 |         <!-- Direct dependencies -->
 | 
|---|
| 1024 |         <copy todir="${modules.dir}" flatten="true">
 | 
|---|
| 1025 |             <fileset refid="runtime.fileset" />
 | 
|---|
| 1026 |         </copy>
 | 
|---|
| 1027 |         <exec executable="jdeps" dir="${modules.dir}">
 | 
|---|
| 1028 |             <arg line="-f 'java.*|org.xml.*|org.w3c.*|sun.*|com.sun.*|com.google.*|org.tukaani.*'"/>
 | 
|---|
| 1029 |             <arg line="-dotoutput dots *.jar"/>
 | 
|---|
| 1030 |         </exec>
 | 
|---|
| 1031 |         <exec executable="dot" dir="${modules.dir}/dots">
 | 
|---|
| 1032 |             <arg line="-O -Tpng summary.dot"/>
 | 
|---|
| 1033 |         </exec>
 | 
|---|
| 1034 |         <move file="${modules.dir}/dots/summary.dot.png" tofile="${modules.dir}/josm-with-direct-dependencies.png"/>
 | 
|---|
| 1035 |         <!-- All dependencies -->
 | 
|---|
| 1036 |         <jar basedir="${build.dir}" level="${clevel}" destfile="${modules.dir}/google-gdata.jar" includes="com/google/**/*.class"/>
 | 
|---|
| 1037 |         <exec executable="jdeps" dir="${modules.dir}">
 | 
|---|
| 1038 |             <arg line="-dotoutput dots *.jar"/>
 | 
|---|
| 1039 |         </exec>
 | 
|---|
| 1040 |         <exec executable="dot" dir="${modules.dir}/dots">
 | 
|---|
| 1041 |             <arg line="-O -Tpng summary.dot"/>
 | 
|---|
| 1042 |         </exec>
 | 
|---|
| 1043 |         <move file="${modules.dir}/dots/summary.dot.png" tofile="${modules.dir}/josm-with-all-dependencies.png"/>
 | 
|---|
| 1044 |     </target>
 | 
|---|
| 1045 |     <target name="resolve" depends="init-ivy" unless="resolve.notRequired" description="Resolve Ivy dependencies">
 | 
|---|
| 1046 |         <ivy:settings file="${base.dir}/ivysettings.xml"/>
 | 
|---|
| 1047 |         <ivy:resolve log="download-only" file="${base.dir}/ivy.xml" keep="true"/>
 | 
|---|
| 1048 |         <ivy:cachepath log="download-only" pathid="compile.path" conf="compile"/>
 | 
|---|
| 1049 |         <ivy:cachepath log="download-only" pathid="runtime.path" conf="runtime"/>
 | 
|---|
| 1050 |         <ivy:cachefileset log="download-only" setid="runtime.fileset" conf="runtime"/>
 | 
|---|
| 1051 |         <ivy:cachepath log="download-only" pathid="test.path" conf="test"/>
 | 
|---|
| 1052 |     </target>
 | 
|---|
| 1053 |     <target name="extract-libraries" depends="resolve" description="Extract libraries to build dir">
 | 
|---|
| 1054 |         <unzip dest="${build.dir}">
 | 
|---|
| 1055 |             <fileset refid="runtime.fileset"/>
 | 
|---|
| 1056 |             <patternset>
 | 
|---|
| 1057 |                 <exclude name="META-INF/*"/>
 | 
|---|
| 1058 |                 <exclude name="META-INF/maven/**"/>
 | 
|---|
| 1059 |                 <exclude name="META-INF/resources/webjars/tag2link/*/LICENSE"/>
 | 
|---|
| 1060 |                 <exclude name="META-INF/resources/webjars/tag2link/*/README.md"/>
 | 
|---|
| 1061 |                 <exclude name="META-INF/resources/webjars/tag2link/*/build.js"/>
 | 
|---|
| 1062 |                 <exclude name="META-INF/resources/webjars/tag2link/*/package.json"/>
 | 
|---|
| 1063 |                 <exclude name="META-INF/resources/webjars/tag2link/*/schema.json"/>
 | 
|---|
| 1064 |                 <exclude name="META-INF/resources/webjars/tag2link/*/tag2link.sophox.sparql"/>
 | 
|---|
| 1065 |                 <exclude name="META-INF/resources/webjars/tag2link/*/tag2link.wikidata.sparql"/>
 | 
|---|
| 1066 |                 <exclude name="META-INF/versions/**"/>
 | 
|---|
| 1067 |                 <exclude name="*"/>
 | 
|---|
| 1068 |                 <exclude name="org/openstreetmap/gui/jmapviewer/Demo*"/>
 | 
|---|
| 1069 |                 <exclude name="com/drew/imaging/FileTypeDetector*"/>
 | 
|---|
| 1070 |                 <exclude name="com/drew/imaging/ImageMetadataReader*"/>
 | 
|---|
| 1071 |                 <exclude name="com/drew/imaging/avi/**"/>
 | 
|---|
| 1072 |                 <exclude name="com/drew/imaging/bmp/**"/>
 | 
|---|
| 1073 |                 <exclude name="com/drew/imaging/eps/**"/>
 | 
|---|
| 1074 |                 <exclude name="com/drew/imaging/gif/**"/>
 | 
|---|
| 1075 |                 <exclude name="com/drew/imaging/heif/**"/>
 | 
|---|
| 1076 |                 <exclude name="com/drew/imaging/ico/**"/>
 | 
|---|
| 1077 |                 <exclude name="com/drew/imaging/mp3/**"/>
 | 
|---|
| 1078 |                 <exclude name="com/drew/imaging/mp4/**"/>
 | 
|---|
| 1079 |                 <exclude name="com/drew/imaging/pcx/**"/>
 | 
|---|
| 1080 |                 <exclude name="com/drew/imaging/psd/**"/>
 | 
|---|
| 1081 |                 <exclude name="com/drew/imaging/quicktime/**"/>
 | 
|---|
| 1082 |                 <exclude name="com/drew/imaging/raf/**"/>
 | 
|---|
| 1083 |                 <exclude name="com/drew/imaging/riff/**"/>
 | 
|---|
| 1084 |                 <exclude name="com/drew/imaging/wav/**"/>
 | 
|---|
| 1085 |                 <exclude name="com/drew/imaging/webp/**"/>
 | 
|---|
| 1086 |                 <exclude name="com/drew/metadata/avi/**"/>
 | 
|---|
| 1087 |                 <exclude name="com/drew/metadata/bmp/**"/>
 | 
|---|
| 1088 |                 <exclude name="com/drew/metadata/eps/**"/>
 | 
|---|
| 1089 |                 <exclude name="com/drew/metadata/gif/**"/>
 | 
|---|
| 1090 |                 <exclude name="com/drew/metadata/heif/**"/>
 | 
|---|
| 1091 |                 <exclude name="com/drew/metadata/ico/**"/>
 | 
|---|
| 1092 |                 <exclude name="com/drew/metadata/mov/**"/>
 | 
|---|
| 1093 |                 <exclude name="com/drew/metadata/mp3/**"/>
 | 
|---|
| 1094 |                 <exclude name="com/drew/metadata/mp4/**"/>
 | 
|---|
| 1095 |                 <exclude name="com/drew/metadata/pcx/**"/>
 | 
|---|
| 1096 |                 <exclude name="com/drew/metadata/wav/**"/>
 | 
|---|
| 1097 |                 <exclude name="com/drew/metadata/webp/**"/>
 | 
|---|
| 1098 |                 <exclude name="com/drew/tools/**"/>
 | 
|---|
| 1099 |                 <exclude name="com/kitfox/svg/app/ant/**"/>
 | 
|---|
| 1100 |                 <exclude name="com/kitfox/svg/app/*Dialog*"/>
 | 
|---|
| 1101 |                 <exclude name="com/kitfox/svg/app/*Frame*"/>
 | 
|---|
| 1102 |                 <exclude name="com/kitfox/svg/app/*Player*"/>
 | 
|---|
| 1103 |                 <exclude name="com/kitfox/svg/app/*Viewer*"/>
 | 
|---|
| 1104 |                 <exclude name="org/apache/commons/compress/PasswordRequiredException*"/>
 | 
|---|
| 1105 |                 <exclude name="org/apache/commons/compress/archivers/**"/>
 | 
|---|
| 1106 |                 <exclude name="org/apache/commons/compress/changes/**"/>
 | 
|---|
| 1107 |                 <exclude name="org/apache/commons/compress/compressors/bzip2/BZip2Utils*"/>
 | 
|---|
| 1108 |                 <exclude name="org/apache/commons/compress/compressors/brotli/**"/>
 | 
|---|
| 1109 |                 <exclude name="org/apache/commons/compress/compressors/CompressorStreamFactory*"/>
 | 
|---|
| 1110 |                 <exclude name="org/apache/commons/compress/compressors/CompressorStreamProvider*"/>
 | 
|---|
| 1111 |                 <exclude name="org/apache/commons/compress/compressors/CompressorException*"/>
 | 
|---|
| 1112 |                 <exclude name="org/apache/commons/compress/compressors/FileNameUtil*"/>
 | 
|---|
| 1113 |                 <exclude name="org/apache/commons/compress/compressors/deflate/**"/>
 | 
|---|
| 1114 |                 <exclude name="org/apache/commons/compress/compressors/gzip/**"/>
 | 
|---|
| 1115 |                 <exclude name="org/apache/commons/compress/compressors/lz4/**"/>
 | 
|---|
| 1116 |                 <exclude name="org/apache/commons/compress/compressors/lzma/**"/>
 | 
|---|
| 1117 |                 <exclude name="org/apache/commons/compress/compressors/lz77support/**"/>
 | 
|---|
| 1118 |                 <exclude name="org/apache/commons/compress/compressors/pack200/**"/>
 | 
|---|
| 1119 |                 <exclude name="org/apache/commons/compress/compressors/snappy/**"/>
 | 
|---|
| 1120 |                 <exclude name="org/apache/commons/compress/compressors/xz/XZUtils*"/>
 | 
|---|
| 1121 |                 <exclude name="org/apache/commons/compress/compressors/z/**"/>
 | 
|---|
| 1122 |                 <exclude name="org/apache/commons/compress/compressors/zstandard/**"/>
 | 
|---|
| 1123 |                 <exclude name="org/apache/commons/compress/java/util/jar/Pack200*"/>
 | 
|---|
| 1124 |                 <exclude name="org/apache/commons/compress/harmony/pack200/**"/>
 | 
|---|
| 1125 |                 <exclude name="org/apache/commons/compress/harmony/unpack200/**"/>
 | 
|---|
| 1126 |                 <exclude name="org/apache/commons/compress/parallel/**"/>
 | 
|---|
| 1127 |                 <exclude name="org/apache/commons/compress/utils/ArchiveUtils*"/>
 | 
|---|
| 1128 |                 <exclude name="org/apache/commons/jcs3/auxiliary/disk/jdbc/**"/>
 | 
|---|
| 1129 |                 <exclude name="org/apache/commons/jcs3/auxiliary/remote/http/client/**"/>
 | 
|---|
| 1130 |                 <exclude name="org/apache/commons/jcs3/auxiliary/remote/http/server/RemoteHttpCacheServlet*"/>
 | 
|---|
| 1131 |                 <exclude name="org/apache/commons/jcs3/auxiliary/remote/server/RemoteCacheStartupServlet*"/>
 | 
|---|
| 1132 |                 <exclude name="org/apache/commons/jcs3/log/Log4j2Factory*"/>
 | 
|---|
| 1133 |                 <exclude name="org/apache/commons/jcs3/log/Log4j2LogAdapter*"/>
 | 
|---|
| 1134 |                 <exclude name="org/apache/commons/jcs3/utils/servlet/**"/>
 | 
|---|
| 1135 |             </patternset>
 | 
|---|
| 1136 |         </unzip>
 | 
|---|
| 1137 |     </target>
 | 
|---|
| 1138 |     <target name="sources" description="Generate jar file of JOSM source files and its dependencies" depends="init,epsg,resolve">
 | 
|---|
| 1139 |         <ivy:cachefileset log="download-only" setid="sources.fileset" conf="sources"/>
 | 
|---|
| 1140 |         <jar destfile="${dist-sources.jar}" level="${clevel}">
 | 
|---|
| 1141 |             <zipgroupfileset refid="sources.fileset"/>
 | 
|---|
| 1142 |             <fileset dir="${src.dir}"/>
 | 
|---|
| 1143 |             <fileset dir="${resources.dir}"/>
 | 
|---|
| 1144 |         </jar>
 | 
|---|
| 1145 |     </target>
 | 
|---|
| 1146 |     <target name="bootstrap-workspace" description="Copy libraries from ivy cache to workspace folders for IDE" depends="resolve">
 | 
|---|
| 1147 |         <delete dir="${lib.dir}"/>
 | 
|---|
| 1148 |         <ivy:retrieve pattern="${lib.dir}/[conf]/[artifact]-[type].[ext]" conf="compile,runtime,sources,test"/>
 | 
|---|
| 1149 |         <ivy:retrieve pattern="${lib.dir}/tools/[artifact]-[type].[ext]" conf="javacc,checkstyle,pmd,spotbugs,errorprone" file="${tools.ivy}"/>
 | 
|---|
| 1150 |     </target>
 | 
|---|
| 1151 |     <target name="ivy-report" description="Generate Ivy reports of dependency resolving" depends="resolve">
 | 
|---|
| 1152 |         <ivy:report todir="${tools.dir}/ivy-report" graph="false"/>
 | 
|---|
| 1153 |     </target>
 | 
|---|
| 1154 |     <target name="ivy-checkdepsupdate" description="Display dependency updates on the console" depends="resolve">
 | 
|---|
| 1155 |         <ivy:resolve log="quiet" file="${tools.ivy}" keep="true" conf="*"/>
 | 
|---|
| 1156 |         <ivy:checkdepsupdate/>
 | 
|---|
| 1157 |         <echo message="${line.separator}"/>
 | 
|---|
| 1158 |         <ivy:resolve log="quiet" file="${base.dir}/ivy.xml" keep="true" conf="*"/>
 | 
|---|
| 1159 |         <ivy:checkdepsupdate/>
 | 
|---|
| 1160 |     </target>
 | 
|---|
| 1161 |     <target name="api-dependency-tree" description="Displays Ivy dependency tree for JOSM API" depends="resolve">
 | 
|---|
| 1162 |         <ivy:dependencytree conf="api"/>
 | 
|---|
| 1163 |     </target>
 | 
|---|
| 1164 |     <target name="test-dependency-tree" description="Displays Ivy dependency tree for JOSM tests" depends="resolve">
 | 
|---|
| 1165 |         <ivy:dependencytree conf="test"/>
 | 
|---|
| 1166 |     </target>
 | 
|---|
| 1167 | </project>
 | 
|---|