]> granicus.if.org Git - icu/commitdiff
ICU-21142 Improving Maven handling of CLDR API Jar file for new tools.
authorDavid Beaumont <dbeaumont@google.com>
Thu, 18 Jun 2020 20:11:53 +0000 (20:11 +0000)
committerDavid Beaumont <david.beaumont+github@gmail.com>
Fri, 19 Jun 2020 12:03:36 +0000 (14:03 +0200)
tools/cldr/cldr-to-icu/build-icu-data.xml
tools/cldr/lib/README.txt
tools/cldr/lib/install-cldr-jars.sh
tools/cldr/lib/pom.xml

index 5917adf7bf1d1858a4d649dc254fed04022fb3e4..244191ae96ae60ea06129974c6ad3f66c1b8a6cd 100644 (file)
@@ -83,7 +83,7 @@
     <!-- Build a standalone JAR which is called by Ant (and which avoids needing to mess
          about making Ant know the Maven class-path). -->
     <target name="prepare-jar" depends="init-args">
-        <exec executable="mvn" searchpath="true">
+        <exec executable="mvn" searchpath="true" failonerror="true">
             <arg value="compile"/>
         </exec>
     </target>
index 1d5d980cb062f009bede66a06ce2cea7f06b5c84..66df9c6232c9262f6550adc5065701a8981fe0a8 100644 (file)
@@ -55,6 +55,7 @@ To update the local Maven repository (e.g. to install the CLDR jar) then from
 this directory (lib/) you should run:
 
 $ mvn install:install-file \
+  -Dproject.parent.relativePath="" \
   -DgroupId=org.unicode.cldr \
   -DartifactId=cldr-api \
   -Dversion=0.1-SNAPSHOT \
@@ -63,10 +64,11 @@ $ mvn install:install-file \
   -DlocalRepositoryPath=. \
   -Dfile=<CLDR_ROOT>/tools/java/cldr.jar
 
-And if you have updated one of these libraries then from the main project
-directory (i.e. the directory the Maven pom.xml file(s) are in) run:
+And if you have updated one of these libraries then from this directory run:
 
-$ mvn dependency:purge-local-repository -DsnapshotsOnly=true
+$ mvn dependency:purge-local-repository \
+  -Dproject.parent.relativePath="" \
+  -DmanualIncludes=org.unicode.cldr:cldr-api:jar
 
 After doing this, you should see something like the following list of files in
 this directory:
@@ -80,3 +82,20 @@ org/unicode/cldr/cldr-api/0.1-SNAPSHOT/cldr-api-0.1-SNAPSHOT.jar
 Finally, if you choose to update the version number of the snapshot, then also
 update all the the pom.xml files which reference it (but this is unlikely to be
 necessary).
+
+Troubleshooting
+---------------
+
+While the Maven system should keep the CLDR JAR up to date, there is a chance
+that you may have an out of date JAR installed elsewhere. If you have any
+issues with the JAR not being the expected version (e.g. after making changes)
+then run the above "purge" step again, from this directory.
+
+This should re-resolve the current JAR snapshot from the repository in this
+directory. Having purged the Maven cache, next time you build a project, you
+should see something like:
+
+[exec] Downloading from <xxx>: <url>/org/unicode/cldr/cldr-api/0.1-SNAPSHOT/maven-metadata.xml
+[exec] [INFO] Building jar: <path-to-icu-root>/tools/cldr/cldr-to-icu/target/cldr-to-icu-1.0-SNAPSHOT-jar-with-dependencies.jar
+
+This shows that it has had to re-fetch the JAR file.
index 16f7732fd8ae1dfda2a96f5e55ba6eb40db2b864..7b630643990d91690298ec34b7485ff6565f5ce1 100755 (executable)
@@ -84,6 +84,7 @@ popd > /dev/null
 # The -B flag is "batch" mode and won't mess about with escape codes in the log file.
 echo "Installing CLDR JAR file..."
 run_with_logging mvn -B install:install-file \
+  -Dproject.parent.relativePath="" \
   -DgroupId=org.unicode.cldr \
   -DartifactId=cldr-api \
   -Dversion=0.1-SNAPSHOT \
@@ -93,7 +94,9 @@ run_with_logging mvn -B install:install-file \
   -Dfile="${CLDR_TOOLS_DIR}/cldr.jar"
 
 echo "Syncing local Maven repository..."
-run_with_logging mvn -B dependency:purge-local-repository -DsnapshotsOnly=true
+run_with_logging mvn -B dependency:purge-local-repository \
+  -Dproject.parent.relativePath="" \
+  -DmanualIncludes=org.unicode.cldr:cldr-api:jar 
 
 mv -f "${LOG_FILE}" "last_log.txt"
 echo "All done! (log file: last_log.txt)"
index 41da0b1271baf861f04e6c1a6e9b9f328e3f2aee..842e226dc3b10738356ef309c8c9f8a178ecb92c 100644 (file)
          to identify the absolute path of a parent POM file). However since
          child POM files should have a <parent> declaration with the relative
          path in it, we can use that. Note however that this is a bit fragile
-         and relies on <relativePath> being a directory, not a POM file. -->
+         and relies on <relativePath> being a directory, not a POM file.
+         
+         In order to allow the local repository to work either when it is used
+         by a child POM file or when it's used directly (e.g. for installing
+         or purging the cache) when it is invoked from this directory, the
+           -Dproject.parent.relativePath=""
+         argument must be given. -->
     <repositories>
         <repository>
             <id>local-maven-repo</id>