1<?xml version="1.0" ?> 2 3<project name="libphonenumber" default="compile"> 4 <property name="libphonenumber.src.dir" value="libphonenumber/src"/> 5 <property name="libphonenumber.test.dir" value="libphonenumber/test"/> 6 <property name="carrier.src.dir" value="carrier/src"/> 7 <property name="carrier.test.dir" value="carrier/test"/> 8 <property name="geocoder.src.dir" value="geocoder/src"/> 9 <property name="geocoder.test.dir" value="geocoder/test"/> 10 <property name="prefixmapper.src.dir" value="internal/prefixmapper/src"/> 11 <property name="prefixmapper.test.dir" value="internal/prefixmapper/test"/> 12 <property name="build.dir" value="build"/> 13 <property name="classes.dir" value="${build.dir}/classes"/> 14 <property name="script.dir" value="script"/> 15 <property name="script.name" value="download-junit-jars.sh"/> 16 <property name="jar.dir" value="${build.dir}/jar"/> 17 <property name="lib.dir" value="lib"/> 18 <property name="report.dir" value="${build.dir}/junitreport"/> 19 <property name="resources.dir" value="../resources"/> 20 <property name="javascript.dir" value="../javascript"/> 21 <property name="build.tools.jar" 22 value="../tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar"/> 23 24 <path id="classpath"> 25 <fileset dir="${lib.dir}" includes="**/*.jar"/> 26 </path> 27 <path id="test.classpath"> 28 <pathelement location="${classes.dir}"/> 29 <pathelement location="${lib.dir}/junit/junit-4.13.1.jar"/> 30 <pathelement location="${jar.dir}/${ant.project.name}-test.jar"/> 31 <fileset dir="${lib.dir}"> 32 <include name="**/*.jar"/> 33 </fileset> 34 </path> 35 36 <target name="download-jars"> 37 <!-- Execute the shell script to download junit and mockito jars --> 38 <exec executable="sh" dir="${script.dir}"> 39 <arg value="${script.name}"/> 40 </exec> 41 </target> 42 43 <target name="build-phone-metadata"> 44 <exec executable="java"> 45 <arg value="-jar" /> 46 <arg value="${build.tools.jar}"/> 47 <arg value="BuildMetadataProtoFromXml"/> 48 <arg value="--input-file=${resources.dir}/PhoneNumberMetadata.xml"/> 49 <arg value="--output-dir=${libphonenumber.src.dir}/com/google/i18n/phonenumbers"/> 50 <arg value="--data-prefix=data/PhoneNumberMetadataProto"/> 51 <arg value="--mapping-class=CountryCodeToRegionCodeMap"/> 52 <arg value="--copyright=2010"/> 53 <arg value="--lite-build=false"/> 54 </exec> 55 </target> 56 57 <target name="build-short-metadata"> 58 <exec executable="java"> 59 <arg value="-jar" /> 60 <arg value="${build.tools.jar}"/> 61 <arg value="BuildMetadataProtoFromXml"/> 62 <arg value="--input-file=${resources.dir}/ShortNumberMetadata.xml"/> 63 <arg value="--output-dir=${libphonenumber.src.dir}/com/google/i18n/phonenumbers"/> 64 <arg value="--data-prefix=data/ShortNumberMetadataProto"/> 65 <arg value="--mapping-class=ShortNumbersRegionCodeSet"/> 66 <arg value="--copyright=2013"/> 67 <arg value="--lite-build=false"/> 68 </exec> 69 </target> 70 71 <target name="build-test-metadata"> 72 <exec executable="java"> 73 <arg value="-jar" /> 74 <arg value="${build.tools.jar}"/> 75 <arg value="BuildMetadataProtoFromXml"/> 76 <arg value="--input-file=${resources.dir}/PhoneNumberMetadataForTesting.xml"/> 77 <arg value="--output-dir=${libphonenumber.test.dir}/com/google/i18n/phonenumbers"/> 78 <arg value="--data-prefix=data/PhoneNumberMetadataProtoForTesting"/> 79 <arg value="--mapping-class=CountryCodeToRegionCodeMapForTesting"/> 80 <arg value="--copyright=2010"/> 81 <arg value="--lite-build=false"/> 82 </exec> 83 </target> 84 85 <target name="build-alternate-metadata"> 86 <exec executable="java"> 87 <arg value="-jar" /> 88 <arg value="${build.tools.jar}"/> 89 <arg value="BuildMetadataProtoFromXml"/> 90 <arg value="--input-file=${resources.dir}/PhoneNumberAlternateFormats.xml"/> 91 <arg value="--output-dir=${libphonenumber.src.dir}/com/google/i18n/phonenumbers"/> 92 <arg value="--data-prefix=data/PhoneNumberAlternateFormatsProto"/> 93 <arg value="--mapping-class=AlternateFormatsCountryCodeSet"/> 94 <arg value="--copyright=2012"/> 95 <arg value="--lite-build=false"/> 96 </exec> 97 </target> 98 99 <target name="build-carrier-data"> 100 <delete dir="carrier/src/com/google/i18n/phonenumbers/carrier/data"/> 101 <exec executable="java"> 102 <arg value="-jar" /> 103 <arg value="${build.tools.jar}"/> 104 <arg value="GeneratePhonePrefixData"/> 105 <arg value="${resources.dir}/carrier/"/> 106 <arg value="carrier/src/com/google/i18n/phonenumbers/carrier/data"/> 107 </exec> 108 </target> 109 110 <target name="build-carrier-test-data"> 111 <delete dir="carrier/test/com/google/i18n/phonenumbers/carrier/testing_data"/> 112 <exec executable="java"> 113 <arg value="-jar" /> 114 <arg value="${build.tools.jar}"/> 115 <arg value="GeneratePhonePrefixData"/> 116 <arg value="${resources.dir}/test/carrier/"/> 117 <arg value="carrier/test/com/google/i18n/phonenumbers/carrier/testing_data"/> 118 </exec> 119 </target> 120 121 <target name="build-geo-data"> 122 <delete dir="geocoder/src/com/google/i18n/phonenumbers/geocoding/data"/> 123 <exec executable="java"> 124 <arg value="-jar" /> 125 <arg value="${build.tools.jar}"/> 126 <arg value="GeneratePhonePrefixData"/> 127 <arg value="${resources.dir}/geocoding/"/> 128 <arg value="geocoder/src/com/google/i18n/phonenumbers/geocoding/data"/> 129 </exec> 130 </target> 131 132 <target name="build-geo-test-data"> 133 <delete dir="geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data"/> 134 <exec executable="java"> 135 <arg value="-jar" /> 136 <arg value="${build.tools.jar}"/> 137 <arg value="GeneratePhonePrefixData"/> 138 <arg value="${resources.dir}/test/geocoding/"/> 139 <arg value="geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data"/> 140 </exec> 141 </target> 142 143 <target name="build-timezones-data"> 144 <exec executable="java"> 145 <arg value="-jar" /> 146 <arg value="${build.tools.jar}"/> 147 <arg value="GenerateTimeZonesMapData"/> 148 <arg value="${resources.dir}/timezones/map_data.txt"/> 149 <arg value="geocoder/src/com/google/i18n/phonenumbers/timezones/data"/> 150 </exec> 151 </target> 152 153 <target name="build-timezones-test-data"> 154 <exec executable="java"> 155 <arg value="-jar" /> 156 <arg value="${build.tools.jar}"/> 157 <arg value="GenerateTimeZonesMapData"/> 158 <arg value="${resources.dir}/test/timezones/map_data.txt"/> 159 <arg value="geocoder/test/com/google/i18n/phonenumbers/timezones/testing_data"/> 160 </exec> 161 </target> 162 163 <target name="build-js-metadata"> 164 <exec executable="java"> 165 <arg value="-jar" /> 166 <arg value="${build.tools.jar}"/> 167 <arg value="BuildMetadataJsonFromXml"/> 168 <arg value="${resources.dir}/PhoneNumberMetadata.xml"/> 169 <arg value="${javascript.dir}/i18n/phonenumbers/metadata.js"/> 170 </exec> 171 <exec executable="java"> 172 <arg value="-jar" /> 173 <arg value="${build.tools.jar}"/> 174 <arg value="BuildMetadataJsonFromXml"/> 175 <arg value="${resources.dir}/PhoneNumberMetadata.xml"/> 176 <arg value="${javascript.dir}/i18n/phonenumbers/metadatalite.js"/> 177 <arg value="true"/> <!-- Lite metadata. --> 178 </exec> 179 <exec executable="java"> 180 <arg value="-jar" /> 181 <arg value="${build.tools.jar}"/> 182 <arg value="BuildMetadataJsonFromXml"/> 183 <arg value="${resources.dir}/ShortNumberMetadata.xml"/> 184 <arg value="${javascript.dir}/i18n/phonenumbers/shortnumbermetadata.js"/> 185 <arg value="false"/> <!-- Lite metadata. --> 186 <arg value="i18n.phonenumbers.shortnumbermetadata" /> <!-- namespace to provide --> 187 </exec> 188 <exec executable="java"> 189 <arg value="-jar" /> 190 <arg value="${build.tools.jar}"/> 191 <arg value="BuildMetadataJsonFromXml"/> 192 <arg value="${resources.dir}/PhoneNumberMetadataForTesting.xml"/> 193 <arg value="${javascript.dir}/i18n/phonenumbers/metadatafortesting.js"/> 194 </exec> 195 </target> 196 197 <target name="compile" description="Compile Java source." 198 depends="download-jars,build-phone-metadata,build-short-metadata,build-alternate-metadata,build-carrier-data,build-geo-data,build-timezones-data"> 199 <mkdir dir="${classes.dir}"/> 200 <javac srcdir="${libphonenumber.src.dir};${carrier.src.dir};${geocoder.src.dir};${prefixmapper.src.dir}" 201 destdir="${classes.dir}" classpathref="classpath" includeAntRuntime="false" encoding="UTF-8"/> 202 <javac srcdir="${libphonenumber.test.dir};${carrier.test.dir};${geocoder.test.dir};${prefixmapper.test.dir}" 203 destdir="${classes.dir}" classpathref="classpath" debug="on" 204 includeAntRuntime="false"/> 205 </target> 206 207 <target name="jar" depends="compile"> 208 <mkdir dir="${jar.dir}"/> 209 <jar destfile="${jar.dir}/${ant.project.name}.jar"> 210 <fileset dir="${classes.dir}"> 211 <include name="**/*.class"/> 212 <exclude name="**/*Test*"/> 213 <exclude name="**/BuildMetadata*"/> 214 <exclude name="**/PhoneNumberTo*"/> 215 <exclude name="**/geocoding/*"/> 216 <exclude name="**/prefixmapper/*"/> 217 </fileset> 218 <fileset dir="${libphonenumber.src.dir}"> 219 <include name="**/PhoneNumberMetadataProto*"/> 220 <include name="**/PhoneNumberAlternateFormatsProto*"/> 221 <include name="**/ShortNumberMetadataProto*"/> 222 </fileset> 223 </jar> 224 <jar destfile="${jar.dir}/carrier-mapper.jar"> 225 <fileset dir="${classes.dir}"> 226 <include name="**/PhoneNumberToCarrierMapper.class"/> 227 <include name="**/prefixmapper/*.class"/> 228 <exclude name="**/*Test*"/> 229 </fileset> 230 <fileset dir="${carrier.src.dir}"> 231 <include name="**/carrier/data/*"/> 232 </fileset> 233 </jar> 234 <jar destfile="${jar.dir}/offline-geocoder.jar"> 235 <fileset dir="${classes.dir}"> 236 <include name="**/geocoding/*.class"/> 237 <include name="**/PhoneNumberToTimeZonesMapper*"/> 238 <include name="**/prefixmapper/*.class"/> 239 <exclude name="**/*Test*"/> 240 </fileset> 241 <fileset dir="${geocoder.src.dir}"> 242 <include name="**/geocoding/data/*"/> 243 <include name="**/timezones/data/*"/> 244 </fileset> 245 </jar> 246 </target> 247 248 <target name="test-jar" 249 depends="compile,build-test-metadata,build-carrier-test-data,build-geo-test-data,build-timezones-test-data"> 250 <mkdir dir="${jar.dir}"/> 251 <jar destfile="${jar.dir}/${ant.project.name}-test.jar"> 252 <fileset dir="${classes.dir}"> 253 <include name="**/*.class"/> 254 <exclude name="**/*Test*"/> 255 </fileset> 256 <fileset dir="${libphonenumber.src.dir}"> 257 <include name="**/PhoneNumberMetadataProto*"/> 258 <include name="**/PhoneNumberAlternateFormatsProto*"/> 259 <include name="**/ShortNumberMetadataProto*"/> 260 </fileset> 261 <fileset dir="${libphonenumber.test.dir}"> 262 <include name="**/PhoneNumberMetadataProtoForTesting*"/> 263 </fileset> 264 <fileset dir="${carrier.test.dir}"> 265 <include name="**/carrier/testing_data/*"/> 266 </fileset> 267 <fileset dir="${geocoder.test.dir}"> 268 <include name="**/geocoding/testing_data/*"/> 269 <include name="**/timezones/testing_data/*"/> 270 </fileset> 271 </jar> 272 </target> 273 274 <target name="junit" depends="test-jar"> 275 <mkdir dir="${report.dir}"/> 276 <junit printsummary="yes" 277 failureProperty="test.failed" errorProperty="test.failed"> 278 <classpath refid="test.classpath"/> 279 <formatter type="xml"/> 280 <batchtest fork="no" todir="${report.dir}"> 281 <fileset dir="${libphonenumber.test.dir}" includes="**/*Test.java"/> 282 </batchtest> 283 <batchtest fork="no" todir="${report.dir}"> 284 <fileset dir="${carrier.test.dir}" includes="**/*Test.java"/> 285 </batchtest> 286 <batchtest fork="no" todir="${report.dir}"> 287 <fileset dir="${geocoder.test.dir}" includes="**/*Test.java"/> 288 </batchtest> 289 <batchtest fork="no" todir="${report.dir}"> 290 <fileset dir="${prefixmapper.test.dir}" includes="**/*Test.java"/> 291 </batchtest> 292 </junit> 293 <fail message="Tests failed. Run 'ant junitreport' for more info." 294 if="test.failed"/> 295 </target> 296 297 <target name="junitreport"> 298 <junitreport todir="${report.dir}"> 299 <fileset dir="${report.dir}" includes="TEST-*.xml"/> 300 <report todir="${report.dir}"/> 301 </junitreport> 302 </target> 303 304 <target name="testname" unless="test"> 305 <fail message="You must run this target with -Dtest=TestName"/> 306 </target> 307 308 <target name="test" depends="test-jar, testname"> 309 <junit printsummary="withOutAndErr"> 310 <classpath refid="test.classpath"/> 311 <formatter type="plain" usefile="false"/> 312 <batchtest fork="no"> 313 <fileset dir="${libphonenumber.test.dir}" includes="**/*${test}.java"/> 314 <fileset dir="${carrier.test.dir}" includes="**/*${test}.java"/> 315 <fileset dir="${geocoder.test.dir}" includes="**/*${test}.java"/> 316 </batchtest> 317 </junit> 318 </target> 319 320 <target name="clean" description="Remove generated files."> 321 <delete dir="${build.dir}"/> 322 </target> 323 324 <target name="clean-build" depends="clean,jar"/> 325</project> 326