xref: /aosp_15_r20/external/icu/icu4j/maven-migration/toMaven.sh (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
1*0e209d39SAndroid Build Coastguard Worker#!/usr/bin/env bash
2*0e209d39SAndroid Build Coastguard Worker# Copyright (C) 2023 and later: Unicode, Inc. and others.
3*0e209d39SAndroid Build Coastguard Worker# License & terms of use: http://www.unicode.org/copyright.html
4*0e209d39SAndroid Build Coastguard Worker
5*0e209d39SAndroid Build Coastguard Worker# Move the sources from main/classes and main/tests into a maven structure
6*0e209d39SAndroid Build Coastguard Worker# - `main/classes/foo/src/java` go to `foo/src/main`, then split into `java` and `resources`
7*0e209d39SAndroid Build Coastguard Worker# - `main/tests/foo/src/java` go to `foo/src/test`, then split into `java` and `resources`
8*0e209d39SAndroid Build Coastguard Worker# - `main/tests/foo/src/META-INF` goes to ... `resources`
9*0e209d39SAndroid Build Coastguard Worker#
10*0e209d39SAndroid Build Coastguard Worker# From this:
11*0e209d39SAndroid Build Coastguard Worker# classes/
12*0e209d39SAndroid Build Coastguard Worker#   <module>/
13*0e209d39SAndroid Build Coastguard Worker#     src/
14*0e209d39SAndroid Build Coastguard Worker# test/
15*0e209d39SAndroid Build Coastguard Worker#   <module>/
16*0e209d39SAndroid Build Coastguard Worker#     src/
17*0e209d39SAndroid Build Coastguard Worker#
18*0e209d39SAndroid Build Coastguard Worker# To this (standard maven structure):
19*0e209d39SAndroid Build Coastguard Worker# <module>/
20*0e209d39SAndroid Build Coastguard Worker#   main/
21*0e209d39SAndroid Build Coastguard Worker#     src/
22*0e209d39SAndroid Build Coastguard Worker#       java/
23*0e209d39SAndroid Build Coastguard Worker#       resources/
24*0e209d39SAndroid Build Coastguard Worker#   test/
25*0e209d39SAndroid Build Coastguard Worker#     src/
26*0e209d39SAndroid Build Coastguard Worker#       java/
27*0e209d39SAndroid Build Coastguard Worker#       resources/
28*0e209d39SAndroid Build Coastguard Worker#
29*0e209d39SAndroid Build Coastguard Worker# Then we cleanup older Eclipse project & launcher files, ant scripts, manifest.stub
30*0e209d39SAndroid Build Coastguard Worker
31*0e209d39SAndroid Build Coastguard Workerfunction safeMkdir() {
32*0e209d39SAndroid Build Coastguard Worker  mkdir -p "$1"
33*0e209d39SAndroid Build Coastguard Worker}
34*0e209d39SAndroid Build Coastguard Worker
35*0e209d39SAndroid Build Coastguard Workerfunction moveOrRename() {
36*0e209d39SAndroid Build Coastguard Worker  local SRC=$1
37*0e209d39SAndroid Build Coastguard Worker  local DEST=$2
38*0e209d39SAndroid Build Coastguard Worker
39*0e209d39SAndroid Build Coastguard Worker  mv "$SRC" "$DEST"
40*0e209d39SAndroid Build Coastguard Worker}
41*0e209d39SAndroid Build Coastguard Worker
42*0e209d39SAndroid Build Coastguard Workerfunction rmDirIfExists() {
43*0e209d39SAndroid Build Coastguard Worker  [ -d "$1" ] && rm -fr "$1"
44*0e209d39SAndroid Build Coastguard Worker}
45*0e209d39SAndroid Build Coastguard Worker
46*0e209d39SAndroid Build Coastguard Workerfunction rmFileIfExists() {
47*0e209d39SAndroid Build Coastguard Worker  [ -f "$1" ] && rm "$1"
48*0e209d39SAndroid Build Coastguard Worker}
49*0e209d39SAndroid Build Coastguard Worker
50*0e209d39SAndroid Build Coastguard Workerfunction copyRecursive() {
51*0e209d39SAndroid Build Coastguard Worker  local SRC=$1
52*0e209d39SAndroid Build Coastguard Worker  local DEST=$2
53*0e209d39SAndroid Build Coastguard Worker
54*0e209d39SAndroid Build Coastguard Worker  cp -R "$SRC" "$DEST"
55*0e209d39SAndroid Build Coastguard Worker}
56*0e209d39SAndroid Build Coastguard Worker
57*0e209d39SAndroid Build Coastguard Workerfunction safeMoveDir() {
58*0e209d39SAndroid Build Coastguard Worker  local FOLDER_NAME=$1
59*0e209d39SAndroid Build Coastguard Worker  local FROM_FOLDER=$2
60*0e209d39SAndroid Build Coastguard Worker  local TO_FOLDER=$3
61*0e209d39SAndroid Build Coastguard Worker
62*0e209d39SAndroid Build Coastguard Worker  if [ ! -d "$FROM_FOLDER/$FOLDER_NAME" ]; then
63*0e209d39SAndroid Build Coastguard Worker    echo "  No '$FROM_FOLDER/$FOLDER_NAME' to move."
64*0e209d39SAndroid Build Coastguard Worker    return
65*0e209d39SAndroid Build Coastguard Worker  fi
66*0e209d39SAndroid Build Coastguard Worker  if [ -e "$TO_FOLDER/$FOLDER_NAME" ]; then
67*0e209d39SAndroid Build Coastguard Worker    echo "  Error: folder '$TO_FOLDER/$FOLDER_NAME' already exists!"
68*0e209d39SAndroid Build Coastguard Worker    exit
69*0e209d39SAndroid Build Coastguard Worker  else
70*0e209d39SAndroid Build Coastguard Worker    safeMkdir $TO_FOLDER
71*0e209d39SAndroid Build Coastguard Worker    moveOrRename $FROM_FOLDER/$FOLDER_NAME $TO_FOLDER/
72*0e209d39SAndroid Build Coastguard Worker    echo "  Moving '$FOLDER_NAME' folder from '$FROM_FOLDER' to '$TO_FOLDER'"
73*0e209d39SAndroid Build Coastguard Worker  fi
74*0e209d39SAndroid Build Coastguard Worker}
75*0e209d39SAndroid Build Coastguard Worker
76*0e209d39SAndroid Build Coastguard Workerfunction rmFileGlobInDir() {
77*0e209d39SAndroid Build Coastguard Worker  local DIR=$1
78*0e209d39SAndroid Build Coastguard Worker  local PATTERN=$2
79*0e209d39SAndroid Build Coastguard Worker
80*0e209d39SAndroid Build Coastguard Worker  find "$DIR" -type f -name "$PATTERN" -exec rm {} \;
81*0e209d39SAndroid Build Coastguard Worker}
82*0e209d39SAndroid Build Coastguard Worker
83*0e209d39SAndroid Build Coastguard Workerfunction keepOnlyFileGlobInDir() {
84*0e209d39SAndroid Build Coastguard Worker  local DIR=$1
85*0e209d39SAndroid Build Coastguard Worker  local PATTERN=$2
86*0e209d39SAndroid Build Coastguard Worker
87*0e209d39SAndroid Build Coastguard Worker  find "$DIR" -type f -not -name "$PATTERN" -exec rm {} \;
88*0e209d39SAndroid Build Coastguard Worker}
89*0e209d39SAndroid Build Coastguard Worker
90*0e209d39SAndroid Build Coastguard Worker# Split the content of the `java` foldert into `java` and `resources`, the way maven wants it
91*0e209d39SAndroid Build Coastguard Workerfunction splitJavaToResources() {
92*0e209d39SAndroid Build Coastguard Worker  # Should point to the folder containing `java`, either main/ or test/
93*0e209d39SAndroid Build Coastguard Worker  local BASE_FOLDER=$1
94*0e209d39SAndroid Build Coastguard Worker
95*0e209d39SAndroid Build Coastguard Worker  echo "  Splitting '$BASE_FOLDER/java/' into '$BASE_FOLDER/java/' and '$BASE_FOLDER/resources/'"
96*0e209d39SAndroid Build Coastguard Worker  # copy `java` to `resources`
97*0e209d39SAndroid Build Coastguard Worker  copyRecursive $BASE_FOLDER/java/ $BASE_FOLDER/resources/
98*0e209d39SAndroid Build Coastguard Worker  # delete all not `.java` from `java`
99*0e209d39SAndroid Build Coastguard Worker  keepOnlyFileGlobInDir $BASE_FOLDER/java/ *.java
100*0e209d39SAndroid Build Coastguard Worker  # delete all `.java` from `resources`
101*0e209d39SAndroid Build Coastguard Worker  rmFileGlobInDir $BASE_FOLDER/resources/  *.java
102*0e209d39SAndroid Build Coastguard Worker}
103*0e209d39SAndroid Build Coastguard Worker
104*0e209d39SAndroid Build Coastguard Workerfunction removeEclipseProjectFiles() {
105*0e209d39SAndroid Build Coastguard Worker  # Should point to the old folder (to be moved), containing the eclipse / ant files
106*0e209d39SAndroid Build Coastguard Worker  local BASE_FOLDER=$1
107*0e209d39SAndroid Build Coastguard Worker
108*0e209d39SAndroid Build Coastguard Worker  # Cleanup Eclipse project & launcher files, ant projects, other stuff
109*0e209d39SAndroid Build Coastguard Worker  # Eclipse
110*0e209d39SAndroid Build Coastguard Worker  rmDirIfExists  "$BASE_FOLDER/.externalToolBuilders/"
111*0e209d39SAndroid Build Coastguard Worker  rmDirIfExists  "$BASE_FOLDER/.settings/"
112*0e209d39SAndroid Build Coastguard Worker  rmFileIfExists "$BASE_FOLDER/.project"
113*0e209d39SAndroid Build Coastguard Worker  rmFileIfExists "$BASE_FOLDER/.classpath"
114*0e209d39SAndroid Build Coastguard Worker  # Ant
115*0e209d39SAndroid Build Coastguard Worker  rmFileIfExists "$BASE_FOLDER/build.properties"
116*0e209d39SAndroid Build Coastguard Worker  rmFileIfExists "$BASE_FOLDER/build.xml"
117*0e209d39SAndroid Build Coastguard Worker  rmFileIfExists "$BASE_FOLDER/manifest.stub"
118*0e209d39SAndroid Build Coastguard Worker  rmFileIfExists "$BASE_FOLDER/findbugs-exclude.xml"
119*0e209d39SAndroid Build Coastguard Worker  find $BASE_FOLDER/ -type f -name '*.launch' -exec rm {} \;
120*0e209d39SAndroid Build Coastguard Worker}
121*0e209d39SAndroid Build Coastguard Worker
122*0e209d39SAndroid Build Coastguard Worker# Takes a folder as parameter and removes the all the empty sub-folders.
123*0e209d39SAndroid Build Coastguard Workerfunction removeEmptyFolders() {
124*0e209d39SAndroid Build Coastguard Worker  local BASE_FOLDER=$1
125*0e209d39SAndroid Build Coastguard Worker  # `find -type d .` finds all subfolders, empty or not.
126*0e209d39SAndroid Build Coastguard Worker  # We can't just force delete (-r), as that would also delete non-empty folders.
127*0e209d39SAndroid Build Coastguard Worker  # And the find iteration is not children first, but parent first.
128*0e209d39SAndroid Build Coastguard Worker  # If I call this with `main/classes/` then I need a loop:
129*0e209d39SAndroid Build Coastguard Worker  # loop 1:
130*0e209d39SAndroid Build Coastguard Worker  #   rm `main/classes/` => FAILS, not empty
131*0e209d39SAndroid Build Coastguard Worker  #   rm `main/classes/core/` => FAILS, not empty
132*0e209d39SAndroid Build Coastguard Worker  #   rm `main/classes/core/src/` => OK
133*0e209d39SAndroid Build Coastguard Worker  # loop 2:
134*0e209d39SAndroid Build Coastguard Worker  #   rm `main/classes/` => FAILS, not empty
135*0e209d39SAndroid Build Coastguard Worker  #   rm `main/classes/core/` => OK
136*0e209d39SAndroid Build Coastguard Worker  # loop 3:
137*0e209d39SAndroid Build Coastguard Worker  #   rm `main/classes/` => OK
138*0e209d39SAndroid Build Coastguard Worker  # If there is any file left in some folder, that (and the parent folders) are not deleted.
139*0e209d39SAndroid Build Coastguard Worker  # That's why we loop here (although 15 might be a bit much :-)
140*0e209d39SAndroid Build Coastguard Worker  for ((n = 0; n < 15; n++)) do
141*0e209d39SAndroid Build Coastguard Worker    find $BASE_FOLDER -type d -exec rm -d {} \; 2> /dev/null
142*0e209d39SAndroid Build Coastguard Worker  done
143*0e209d39SAndroid Build Coastguard Worker}
144*0e209d39SAndroid Build Coastguard Worker
145*0e209d39SAndroid Build Coastguard Workerfunction moveMainModuleToMaven() {
146*0e209d39SAndroid Build Coastguard Worker  # 1. $1: component name (core, charset, etc)
147*0e209d39SAndroid Build Coastguard Worker  local MODULE_NAME=$1
148*0e209d39SAndroid Build Coastguard Worker  # 2. folder name in the pre-maven structure (`classes` or `tests`)
149*0e209d39SAndroid Build Coastguard Worker  local SRC_TYPE=$2
150*0e209d39SAndroid Build Coastguard Worker  # 3. folder name in the maven standard structure (`main` or `test`)
151*0e209d39SAndroid Build Coastguard Worker  local TRG_TYPE=$3
152*0e209d39SAndroid Build Coastguard Worker
153*0e209d39SAndroid Build Coastguard Worker  if [ ! -d main/$SRC_TYPE/$MODULE_NAME ]; then
154*0e209d39SAndroid Build Coastguard Worker    echo "  Module '$MODULE_NAME' does not have '$SRC_TYPE' to move to '$TRG_TYPE'"
155*0e209d39SAndroid Build Coastguard Worker    return
156*0e209d39SAndroid Build Coastguard Worker  fi
157*0e209d39SAndroid Build Coastguard Worker
158*0e209d39SAndroid Build Coastguard Worker  safeMoveDir com      main/$SRC_TYPE/$MODULE_NAME/src main/$MODULE_NAME/src/$TRG_TYPE/java
159*0e209d39SAndroid Build Coastguard Worker  splitJavaToResources main/$MODULE_NAME/src/$TRG_TYPE
160*0e209d39SAndroid Build Coastguard Worker  safeMoveDir META-INF main/$SRC_TYPE/$MODULE_NAME/src main/$MODULE_NAME/src/$TRG_TYPE/resources
161*0e209d39SAndroid Build Coastguard Worker
162*0e209d39SAndroid Build Coastguard Worker  removeEclipseProjectFiles main/$SRC_TYPE/$MODULE_NAME
163*0e209d39SAndroid Build Coastguard Worker
164*0e209d39SAndroid Build Coastguard Worker  # Remove the original (pre-maven) folders that were left empty after we moved stuff out
165*0e209d39SAndroid Build Coastguard Worker  # For example if all we had was source code + Eclipse files the folder will be left empty.
166*0e209d39SAndroid Build Coastguard Worker  # e.g. main/classes/collate
167*0e209d39SAndroid Build Coastguard Worker  echo "  Remove all empty pre-maven folders from 'main/$SRC_TYPE/$MODULE_NAME'"
168*0e209d39SAndroid Build Coastguard Worker  removeEmptyFolders main/$SRC_TYPE/$MODULE_NAME
169*0e209d39SAndroid Build Coastguard Worker
170*0e209d39SAndroid Build Coastguard Worker  # Remove folders that didn't receive any content in the new structure.
171*0e209d39SAndroid Build Coastguard Worker  # For example when we copy the `java` folder to `resources`, then remove
172*0e209d39SAndroid Build Coastguard Worker  # all the *.java files, we might end up with empty `resources` folder
173*0e209d39SAndroid Build Coastguard Worker  # if there was no data file mixed-in with the code to begin with.
174*0e209d39SAndroid Build Coastguard Worker  # e.g. main/collate/src/main
175*0e209d39SAndroid Build Coastguard Worker  echo "  Remove all empty post-maven folders from 'main/$MODULE_NAME/src/$TRG_TYPE'"
176*0e209d39SAndroid Build Coastguard Worker  removeEmptyFolders main/$MODULE_NAME/src/$TRG_TYPE
177*0e209d39SAndroid Build Coastguard Worker}
178*0e209d39SAndroid Build Coastguard Worker
179*0e209d39SAndroid Build Coastguard Workerfunction mainModuleToMaven() {
180*0e209d39SAndroid Build Coastguard Worker  echo "Migrating $1 to maven"
181*0e209d39SAndroid Build Coastguard Worker  moveMainModuleToMaven $1 classes main
182*0e209d39SAndroid Build Coastguard Worker  moveMainModuleToMaven $1 tests test
183*0e209d39SAndroid Build Coastguard Worker  safeMkdir main/$MODULE_NAME/src/main/resources/
184*0e209d39SAndroid Build Coastguard Worker  ln -s ../../../../../../LICENSE main/$MODULE_NAME/src/main/resources/LICENSE
185*0e209d39SAndroid Build Coastguard Worker}
186*0e209d39SAndroid Build Coastguard Worker
187*0e209d39SAndroid Build Coastguard Workerfunction simpleModuleToMaven() {
188*0e209d39SAndroid Build Coastguard Worker  # 1. $1: component name (core, charset, etc)
189*0e209d39SAndroid Build Coastguard Worker  local MODULE_NAME=$1
190*0e209d39SAndroid Build Coastguard Worker  local LICENSE_PATH=$2
191*0e209d39SAndroid Build Coastguard Worker  echo "Migrating $MODULE_NAME to maven"
192*0e209d39SAndroid Build Coastguard Worker
193*0e209d39SAndroid Build Coastguard Worker  safeMoveDir com $MODULE_NAME/src $MODULE_NAME/src/main/java
194*0e209d39SAndroid Build Coastguard Worker  splitJavaToResources $MODULE_NAME/src/main
195*0e209d39SAndroid Build Coastguard Worker
196*0e209d39SAndroid Build Coastguard Worker  removeEclipseProjectFiles $MODULE_NAME
197*0e209d39SAndroid Build Coastguard Worker
198*0e209d39SAndroid Build Coastguard Worker  safeMkdir $MODULE_NAME/src/main/resources/
199*0e209d39SAndroid Build Coastguard Worker  ln -s $LICENSE_PATH $MODULE_NAME/src/main/resources/LICENSE
200*0e209d39SAndroid Build Coastguard Worker
201*0e209d39SAndroid Build Coastguard Worker  echo "  Remove empty folders from '$MODULE_NAME'"
202*0e209d39SAndroid Build Coastguard Worker  removeEmptyFolders $MODULE_NAME
203*0e209d39SAndroid Build Coastguard Worker}
204*0e209d39SAndroid Build Coastguard Worker
205*0e209d39SAndroid Build Coastguard Workerfunction moveCoreTestFileToCommon() {
206*0e209d39SAndroid Build Coastguard Worker  local FOLDER_NAME=$1
207*0e209d39SAndroid Build Coastguard Worker  local FILE_NAME=$2
208*0e209d39SAndroid Build Coastguard Worker  safeMkdir $COMMON_TEST_FOLDER/$FOLDER_NAME
209*0e209d39SAndroid Build Coastguard Worker  moveOrRename $CORE_TEST_FOLDER/$FOLDER_NAME/$FILE_NAME $COMMON_TEST_FOLDER/$FOLDER_NAME/
210*0e209d39SAndroid Build Coastguard Worker}
211*0e209d39SAndroid Build Coastguard Worker
212*0e209d39SAndroid Build Coastguard Workerfunction moveCircDepTestOutOfCore() {
213*0e209d39SAndroid Build Coastguard Worker  export CORE_TEST_FOLDER=main/core/src/test/java/com/ibm/icu/dev/test
214*0e209d39SAndroid Build Coastguard Worker  export COMMON_TEST_FOLDER=main/common_tests/src/test/java/com/ibm/icu/dev/test
215*0e209d39SAndroid Build Coastguard Worker
216*0e209d39SAndroid Build Coastguard Worker  safeMkdir $CORE_TEST_FOLDER
217*0e209d39SAndroid Build Coastguard Worker
218*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon calendar DataDrivenCalendarTest.java
219*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format CompactDecimalFormatTest.java
220*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format DataDrivenFormatTest.java
221*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format DateFormatTest.java
222*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format IntlTestDecimalFormatSymbolsC.java
223*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format IntlTestDecimalFormatAPIC.java
224*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format MeasureUnitTest.java
225*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format NumberFormatDataDrivenTest.java
226*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format NumberFormatRegressionTest.java
227*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format NumberFormatSpecificationTest.java
228*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format NumberFormatTest.java
229*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format NumberRegressionTests.java
230*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format PluralRangesTest.java
231*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format PluralRulesTest.java
232*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format RbnfTest.java
233*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format TestMessageFormat.java
234*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon format TimeZoneFormatTest.java
235*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon message2 Mf2FeaturesTest.java
236*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon normalizer BasicTest.java
237*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon number ModifierTest.java
238*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon number NumberFormatterApiTest.java
239*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon number NumberParserTest.java
240*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon number NumberPermutationTest.java
241*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon number NumberRangeFormatterTest.java
242*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon number PatternStringTest.java
243*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon number PropertiesTest.java
244*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon rbbi LSTMBreakEngineTest.java
245*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon serializable CalendarHandler.java
246*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon serializable CompatibilityTest.java
247*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon serializable CoverageTest.java
248*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon serializable ExceptionHandler.java
249*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon serializable FormatHandler.java
250*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon serializable SerializableChecker.java
251*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon serializable SerializableTestUtility.java
252*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon serializable SerializableWriter.java
253*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon stringprep TestIDNARef.java
254*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon stringprep TestStringPrep.java
255*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon util CurrencyTest.java
256*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon util ICUResourceBundleTest.java
257*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon util ICUServiceTest.java
258*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon util LocaleDataTest.java
259*0e209d39SAndroid Build Coastguard Worker  moveCoreTestFileToCommon util ULocaleTest.java
260*0e209d39SAndroid Build Coastguard Worker
261*0e209d39SAndroid Build Coastguard Worker  # Looks like the packaging project was already some kind of test for how things come together.
262*0e209d39SAndroid Build Coastguard Worker  # Should we move all the files in this project instead of common_tests?
263*0e209d39SAndroid Build Coastguard Worker  moveOrRename main/tests/packaging/src/com/ibm/icu/dev/test/* $COMMON_TEST_FOLDER/
264*0e209d39SAndroid Build Coastguard Worker  removeEclipseProjectFiles main/tests/packaging
265*0e209d39SAndroid Build Coastguard Worker
266*0e209d39SAndroid Build Coastguard Worker  # At this point this folder should be empty
267*0e209d39SAndroid Build Coastguard Worker  # So remove if empty (-d) should work
268*0e209d39SAndroid Build Coastguard Worker  rm -d main/core/src/test/java/com/ibm/icu/dev/test/serializable
269*0e209d39SAndroid Build Coastguard Worker}
270*0e209d39SAndroid Build Coastguard Worker
271*0e209d39SAndroid Build Coastguard Workerfunction moveFilesInTools() {
272*0e209d39SAndroid Build Coastguard Worker  local TOOLS_SRC_ROOT_FOLDER=tools/misc/src/main/java/com/ibm/icu/dev/tool
273*0e209d39SAndroid Build Coastguard Worker  local TOOLS_SRC_SHARED_SUBFOLDER=tools/misc/src/main/java/com/ibm/icu/dev/tool/shared
274*0e209d39SAndroid Build Coastguard Worker
275*0e209d39SAndroid Build Coastguard Worker  safeMkdir $TOOLS_SRC_SHARED_SUBFOLDER
276*0e209d39SAndroid Build Coastguard Worker  moveOrRename $TOOLS_SRC_ROOT_FOLDER/UOption.java $TOOLS_SRC_SHARED_SUBFOLDER/
277*0e209d39SAndroid Build Coastguard Worker}
278*0e209d39SAndroid Build Coastguard Worker
279*0e209d39SAndroid Build Coastguard Worker# ===============================================================
280*0e209d39SAndroid Build Coastguard Worker# Here starts the real script execution
281*0e209d39SAndroid Build Coastguard Worker
282*0e209d39SAndroid Build Coastguard Workerif [ -f "main/core/pom.xml" ]; then
283*0e209d39SAndroid Build Coastguard Worker  echo "ERROR: looks like the structure was already migrated to maven?"
284*0e209d39SAndroid Build Coastguard Worker  exit
285*0e209d39SAndroid Build Coastguard Workerfi
286*0e209d39SAndroid Build Coastguard Workerif [ ! -f "main/classes/core/build.xml" ]; then
287*0e209d39SAndroid Build Coastguard Worker  echo "ERROR: the current folder when running this script should be <icu_root>/icu4j"
288*0e209d39SAndroid Build Coastguard Worker  echo "It is currently $PWD."
289*0e209d39SAndroid Build Coastguard Worker  exit
290*0e209d39SAndroid Build Coastguard Workerfi
291*0e209d39SAndroid Build Coastguard Worker
292*0e209d39SAndroid Build Coastguard Worker# Copy over most files from `maven-migration` dir needed for Maven build...
293*0e209d39SAndroid Build Coastguard WorkerMVN_MIG_DIR="$(dirname "${BASH_SOURCE[0]}")"
294*0e209d39SAndroid Build Coastguard WorkercopyRecursive ${MVN_MIG_DIR}/* .
295*0e209d39SAndroid Build Coastguard Worker# ...but don't copy files that are only used for migration
296*0e209d39SAndroid Build Coastguard WorkerrmFileIfExists README_MAVEN.md
297*0e209d39SAndroid Build Coastguard WorkerrmFileIfExists toMaven.sh
298*0e209d39SAndroid Build Coastguard WorkerrmFileIfExists unpack_jars.sh
299*0e209d39SAndroid Build Coastguard Worker
300*0e209d39SAndroid Build Coastguard Worker# Migrate the modules in icu4j/main, which have code (in main/classes) & unit tests (in main/test)
301*0e209d39SAndroid Build Coastguard Workerecho "===================================="
302*0e209d39SAndroid Build Coastguard Workerecho "==== Migrating the main modules ===="
303*0e209d39SAndroid Build Coastguard Workerecho "===================================="
304*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven core
305*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven langdata
306*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven charset
307*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven collate
308*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven localespi
309*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven translit
310*0e209d39SAndroid Build Coastguard Worker# main only
311*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven currdata
312*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven regiondata
313*0e209d39SAndroid Build Coastguard Worker# test only
314*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven framework
315*0e209d39SAndroid Build Coastguard Worker
316*0e209d39SAndroid Build Coastguard Worker# Migrate the modules in icu4j, which have only code and no unit tests
317*0e209d39SAndroid Build Coastguard Workerecho "===================================="
318*0e209d39SAndroid Build Coastguard Workerecho "==== Migrating the root modules ===="
319*0e209d39SAndroid Build Coastguard Workerecho "===================================="
320*0e209d39SAndroid Build Coastguard WorkersimpleModuleToMaven demos        ../../../../../LICENSE
321*0e209d39SAndroid Build Coastguard WorkersimpleModuleToMaven samples      ../../../../../LICENSE
322*0e209d39SAndroid Build Coastguard WorkersimpleModuleToMaven tools/build  ../../../../../../LICENSE
323*0e209d39SAndroid Build Coastguard WorkersimpleModuleToMaven tools/misc   ../../../../../../LICENSE
324*0e209d39SAndroid Build Coastguard Worker
325*0e209d39SAndroid Build Coastguard Workerecho "================================================================================="
326*0e209d39SAndroid Build Coastguard Workerecho "==== Moving core unit tests that depend on non-core (circular dependencies) ====="
327*0e209d39SAndroid Build Coastguard Workerecho "================================================================================="
328*0e209d39SAndroid Build Coastguard Worker
329*0e209d39SAndroid Build Coastguard WorkermoveCircDepTestOutOfCore
330*0e209d39SAndroid Build Coastguard Worker
331*0e209d39SAndroid Build Coastguard Workerecho "================================================================="
332*0e209d39SAndroid Build Coastguard Workerecho "==== Move files to resolve dependency cycles in tools, etc. ====="
333*0e209d39SAndroid Build Coastguard Workerecho "================================================================="
334*0e209d39SAndroid Build Coastguard Worker
335*0e209d39SAndroid Build Coastguard WorkermoveFilesInTools
336*0e209d39SAndroid Build Coastguard Worker
337*0e209d39SAndroid Build Coastguard Worker# Cleanup of Ant-specific dirs & prototype Maven build dirs
338*0e209d39SAndroid Build Coastguard WorkerrmDirIfExists  "$BASE_FOLDER/maven/"
339*0e209d39SAndroid Build Coastguard WorkerrmDirIfExists  "$BASE_FOLDER/maven-build/"
340*0e209d39SAndroid Build Coastguard Worker
341*0e209d39SAndroid Build Coastguard Worker# Some final cleanup for any empty folders
342*0e209d39SAndroid Build Coastguard WorkerremoveEmptyFolders main/classes
343*0e209d39SAndroid Build Coastguard WorkerremoveEmptyFolders main/tests
344*0e209d39SAndroid Build Coastguard Worker
345*0e209d39SAndroid Build Coastguard Worker# Unpack the CLDR data from the shared .jar files
346*0e209d39SAndroid Build Coastguard Worker${MVN_MIG_DIR}/unpack_jars.sh
347*0e209d39SAndroid Build Coastguard Worker
348*0e209d39SAndroid Build Coastguard Workerecho DONE
349