mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-07 06:25:30 +00:00
ICU-21142 Moving CLDR jar file to common location
This commit is contained in:
parent
a29369b586
commit
56bb01ba84
6 changed files with 111 additions and 83 deletions
|
@ -16,7 +16,9 @@ Requirements
|
|||
Important directories
|
||||
---------------------
|
||||
|
||||
CLDR_ROOT = The top-level direcetory for the CLDR project, containing CLDR
|
||||
ICU_ROOT = The top-level directory for this ICU project installation.
|
||||
|
||||
CLDR_ROOT = The top-level directory for the CLDR project, containing CLDR
|
||||
code and non-production data. Usually obtained from:
|
||||
https://github.com/unicode-org/cldr
|
||||
|
||||
|
@ -28,6 +30,7 @@ CLDR_DIR = The top-level directory for the CLDR production data (typically
|
|||
In Posix systems, it's best to set these as exported shell variables, and any
|
||||
following instructions assume they have been set accordingly:
|
||||
|
||||
$ export ICU_ROOT=/path/to/icu
|
||||
$ export CLDR_ROOT=/path/to/cldr
|
||||
$ export CLDR_DIR=/path/to/cldr-staging/production
|
||||
|
||||
|
@ -47,14 +50,13 @@ based system, this should be as simple as:
|
|||
|
||||
$ sudo apt-get install maven ant
|
||||
|
||||
You also need to install two additional CLDR JAR files in a local Maven
|
||||
repository, which can be achieved by either running:
|
||||
You must also install an additional CLDR JAR file the local Maven repository at
|
||||
$ICU_ROOT/tools/cldr/lib (see the README.txt in that directory for more
|
||||
information).
|
||||
|
||||
$ cd "$ICU_ROOT/tools/cldr/lib"
|
||||
$ install-cldr-jars.sh "$CLDR_ROOT"
|
||||
|
||||
from this directory, or following the instructions in lib/README.txt. This
|
||||
step must be repeated if you update the code in the CLDR project you are
|
||||
using, or are using multiple versions of the CLDR code during development.
|
||||
|
||||
Generating all ICU data
|
||||
-----------------------
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
License & terms of use: http://www.unicode.org/copyright.html -->
|
||||
|
||||
<!--================================================================================
|
||||
Setup:
|
||||
Follow the installation instructions in README.txt in this directory.
|
||||
|
||||
To build ICU data files:
|
||||
1: Determine the CLDR base directory and set the CLDR_DIR environment variable.
|
||||
2: Determine the flags required (see the list of properties below).
|
||||
|
|
|
@ -8,11 +8,19 @@
|
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<!-- Include the parent POM file to add the CLDR API dependency. -->
|
||||
<parent>
|
||||
<groupId>org.unicode.icu</groupId>
|
||||
<artifactId>cldr-lib</artifactId>
|
||||
<version>1.0</version>
|
||||
<relativePath>../lib</relativePath>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<groupId>org.unicode.icu</groupId>
|
||||
<!-- No need for <groupId> here (it's defined by the parent POM). -->
|
||||
<artifactId>cldr-to-icu</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<build>
|
||||
|
@ -70,32 +78,12 @@
|
|||
</plugins>
|
||||
</build>
|
||||
|
||||
<!-- This is where the snapshots of the CLDR API and additional auxiliary JAR files are held. -->
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>local-maven-repo</id>
|
||||
<url>file:///${project.basedir}/lib</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<!-- Local dependencies (see lib/README.txt). -->
|
||||
<dependency>
|
||||
<groupId>org.unicode.cldr</groupId>
|
||||
<artifactId>cldr-api</artifactId>
|
||||
<version>0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.ibm.icu</groupId>
|
||||
<artifactId>icu-utilities</artifactId>
|
||||
<version>0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<!-- ICU4J - which should be kept as up-to-date as possible. -->
|
||||
<dependency>
|
||||
<groupId>com.ibm.icu</groupId>
|
||||
<artifactId>icu4j</artifactId>
|
||||
<version>64.2</version>
|
||||
<version>67.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Useful common libraries. Note that some of the code in the CLDR library is also
|
||||
|
|
|
@ -6,33 +6,53 @@
|
|||
What is this directory and why is it empty?
|
||||
-------------------------------------------
|
||||
|
||||
This is the root of a local Maven repository which needs to be populated before the
|
||||
code in this project can be executed.
|
||||
This is the root of a local Maven repository which needs to be populated before
|
||||
code which uses the CLDR data API can be executed.
|
||||
|
||||
To do this, you need to have a local copy of the CLDR project configured on your
|
||||
computer and be able able to build the API jar file and copy an existing utility
|
||||
jar file. In the examples below it is assumed that <CLDR_ROOT> references this CLDR
|
||||
release.
|
||||
jar file. In the examples below it is assumed that $CLDR_ROOT references this
|
||||
CLDR release.
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
This project relies on the Maven build tool for managing dependencies and uses
|
||||
Ant for configuration purposes, so both will need to be installed. On a Debian
|
||||
based system, this should be as simple as:
|
||||
|
||||
$ sudo apt-get install maven ant
|
||||
|
||||
|
||||
Regenerating the CLDR API jar
|
||||
-----------------------------
|
||||
Installing the CLDR API jar
|
||||
---------------------------
|
||||
|
||||
To regenerate the CLDR API jar you need to build the "jar" target using the Ant
|
||||
build.xml file in the "tools/java" directory of the CLDR project:
|
||||
From this directory:
|
||||
|
||||
$ ./install-cldr-jars.sh "$CLDR_ROOT"
|
||||
|
||||
|
||||
Manually installing the CLDR API jar
|
||||
------------------------------------
|
||||
|
||||
Only follow these remaining steps if the installation script isn't suitable or
|
||||
doesn't work on your system.
|
||||
|
||||
To regenerate the CLDR API jar you need to build the "jar" target manually
|
||||
using the Ant build.xml file in the "tools/java" directory of the CLDR project:
|
||||
|
||||
$ cd <CLDR_ROOT>/tools/java
|
||||
$ ant clean jar
|
||||
|
||||
This should result in the cldr.jar file being built into that directory, which can then
|
||||
be installed as a Maven dependency as described above.
|
||||
This should result in the cldr.jar file being built into that directory, which
|
||||
can then be installed as a Maven dependency as described above.
|
||||
|
||||
|
||||
Updating local Maven repository
|
||||
-------------------------------
|
||||
|
||||
To update the local Maven repository (e.g. to install the CLDR jar) then from this
|
||||
directory (lib/) you should run:
|
||||
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 \
|
||||
-DgroupId=org.unicode.cldr \
|
||||
|
@ -43,34 +63,20 @@ $ mvn install:install-file \
|
|||
-DlocalRepositoryPath=. \
|
||||
-Dfile=<CLDR_ROOT>/tools/java/cldr.jar
|
||||
|
||||
And also (for the utility jar):
|
||||
|
||||
$ mvn install:install-file \
|
||||
-DgroupId=com.ibm.icu \
|
||||
-DartifactId=icu-utilities \
|
||||
-Dversion=0.1-SNAPSHOT \
|
||||
-Dpackaging=jar \
|
||||
-DgeneratePom=true \
|
||||
-DlocalRepositoryPath=. \
|
||||
-Dfile=<CLDR_ROOT>/tools/java/libs/utilities.jar
|
||||
|
||||
And if you have updated one of these libraries then from the main project directory
|
||||
(i.e. the parent of this directory) run:
|
||||
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:
|
||||
|
||||
$ mvn dependency:purge-local-repository -DsnapshotsOnly=true
|
||||
|
||||
After doing this, you should see something like the following list of files in this
|
||||
directory:
|
||||
After doing this, you should see something like the following list of files in
|
||||
this directory:
|
||||
|
||||
README.txt <-- this file
|
||||
org/unicode/cldr/cldr-api/maven-metadata-local.xml
|
||||
org/unicode/cldr/cldr-api/0.1-SNAPSHOT/maven-metadata-local.xml
|
||||
org/unicode/cldr/cldr-api/0.1-SNAPSHOT/cldr-api-0.1-SNAPSHOT.pom
|
||||
org/unicode/cldr/cldr-api/0.1-SNAPSHOT/cldr-api-0.1-SNAPSHOT.jar
|
||||
com/ibm/icu/icu-utilities/maven-metadata-local.xml
|
||||
com/ibm/icu/icu-utilities/0.1-SNAPSHOT/maven-metadata-local.xml
|
||||
com/ibm/icu/icu-utilities/0.1-SNAPSHOT/icu-utilities-0.1-SNAPSHOT.jar
|
||||
com/ibm/icu/icu-utilities/0.1-SNAPSHOT/icu-utilities-0.1-SNAPSHOT.pom
|
||||
|
||||
Finally, if you choose to update the version number of the snapshot, then remember to
|
||||
update the root pom.xml, but this is unlikely to be necessary.
|
||||
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).
|
|
@ -48,21 +48,20 @@ function run_with_logging() {
|
|||
# First require that we are run from the same directory as the script.
|
||||
ROOT_DIR="$(realpath $(dirname $0))"
|
||||
if [[ "${ROOT_DIR}" != "$(realpath ${PWD})" ]] ; then
|
||||
echo "WARNING: Shell script should be run from the project root directory"
|
||||
echo "WARNING: Shell script should be run from the Maven lib/ directory"
|
||||
echo "Current directory:"
|
||||
echo " ${PWD}"
|
||||
echo "Project root direcory (where this script is):"
|
||||
echo "Maven lib/ direcory (where this script is):"
|
||||
echo " ${ROOT_DIR}"
|
||||
read -p "Change to project root and continue? " -n 1 -r
|
||||
read -p "Change to lib/ directory and continue? " -n 1 -r
|
||||
echo
|
||||
[[ "${REPLY}" =~ ^[Yy]$ ]] || die "Script must be run from the project root directory"
|
||||
[[ "${REPLY}" =~ ^[Yy]$ ]] || die "Script must be run from the Maven lib/ directory"
|
||||
cd "$ROOT_DIR"
|
||||
fi
|
||||
|
||||
# Check for some expected environmental things early.
|
||||
which ant > /dev/null || die "Cannot find Ant executable 'ant' in the current path."
|
||||
which mvn > /dev/null || die "Cannot find Maven executable 'mvn' in the current path."
|
||||
[[ -d "lib" ]] || die "Cannot find expected 'lib' directory in: $PWD"
|
||||
|
||||
# Check there's one argument that points at a directory (or a symbolic link to a directory).
|
||||
(( $# == 1 )) && [[ -d "$1" ]] || die "Usage: ./install-cldr-jars.sh <CLDR-root-directory>"
|
||||
|
@ -79,13 +78,9 @@ pushd "${CLDR_TOOLS_DIR}" > /dev/null || die "Cannot change directory to: ${CLDR
|
|||
echo "Building CLDR JAR file..."
|
||||
run_with_logging ant -f ./build.xml clean jar
|
||||
[[ -f "cldr.jar" ]] || die "Error creating cldr.jar file"
|
||||
[[ -f "libs/utilities.jar" ]] || die "Cannot find libs/utilities.jar"
|
||||
|
||||
popd > /dev/null
|
||||
|
||||
# Install both required CLDR jars in the lib/ directory.
|
||||
pushd "${ROOT_DIR}/lib" > /dev/null || die "Cannot change to lib directory"
|
||||
|
||||
# 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 \
|
||||
|
@ -97,19 +92,6 @@ run_with_logging mvn -B install:install-file \
|
|||
-DlocalRepositoryPath=. \
|
||||
-Dfile="${CLDR_TOOLS_DIR}/cldr.jar"
|
||||
|
||||
echo "Installing CLDR utilities JAR file..."
|
||||
run_with_logging mvn -B install:install-file \
|
||||
-DgroupId=com.ibm.icu \
|
||||
-DartifactId=icu-utilities \
|
||||
-Dversion=0.1-SNAPSHOT \
|
||||
-Dpackaging=jar \
|
||||
-DgeneratePom=true \
|
||||
-DlocalRepositoryPath=. \
|
||||
-Dfile="${CLDR_TOOLS_DIR}/libs/utilities.jar"
|
||||
|
||||
popd > /dev/null
|
||||
|
||||
# We are back in the root directory now.
|
||||
echo "Syncing local Maven repository..."
|
||||
run_with_logging mvn -B dependency:purge-local-repository -DsnapshotsOnly=true
|
||||
|
47
tools/cldr/lib/pom.xml
Normal file
47
tools/cldr/lib/pom.xml
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- © 2020 and later: Unicode, Inc. and others.
|
||||
License & terms of use: http://www.unicode.org/copyright.html
|
||||
See README.txt for instructions on updating the local repository.
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<!-- This POM file acts as a parent POM file for any tool which is built
|
||||
via Maven and requires access to the CLDR data APIs. This POM file
|
||||
and the other files in this directory encapsulate the somewhat messy
|
||||
task of including the Ant-built CLDR JAR file in Maven projects. -->
|
||||
|
||||
<!-- Declares this to be a POM that's included by other POM files. -->
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<!-- This must match any child POM file's <parent> declaration. -->
|
||||
<groupId>org.unicode.icu</groupId>
|
||||
<artifactId>cldr-lib</artifactId>
|
||||
<version>1.0</version>
|
||||
|
||||
<!-- Important: The "${project.basedir}" property is the directory of the
|
||||
child POM file, not this directory (and there's no easy way in Maven
|
||||
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. -->
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>local-maven-repo</id>
|
||||
<url>file://${project.basedir}/${project.parent.relativePath}</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<!-- Ant-built JAR file(s) installed into the local Maven repository in this
|
||||
directory by the 'install-cldr-jars.sh' script. -->
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.unicode.cldr</groupId>
|
||||
<artifactId>cldr-api</artifactId>
|
||||
<version>0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
Loading…
Add table
Reference in a new issue