blob: b6dac822a07d6d68b9dd7c45a3e3793649b5c979 [file] [log] [blame]
rchandia@google.com96dc36b2011-09-09 17:31:05 +00001source lib-maven-deploy.sh
2
3function finishAndCleanup () {
4 if [[ $thereHaveBeenErrors ]]; then
5 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
6 echo "WARNING: Errors while deploying files, examine output above."
7 echo "Leaving intermediate files at:"
8 echo "$RANDOM_DIR"
Thomas Broyerfaaaf632015-11-19 14:36:56 +01009 find $pomDir -name pom.xml -o -name pom.xml.asc
rchandia@google.com96dc36b2011-09-09 17:31:05 +000010 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
11 else
12 # Clean up
13 rm -rf $RANDOM_DIR
rchandia@google.com96dc36b2011-09-09 17:31:05 +000014 # Remove POMs & ASCs, leaving only templates
Thomas Broyer2c8f8392015-12-01 12:55:48 +010015 find $pomDir -name pom.xml -o -name pom.xml.asc -delete
rchandia@google.com96dc36b2011-09-09 17:31:05 +000016 fi
17
18}
19
20function die () {
21 thereHaveBeenErrors=1
22 if [[ "$continueOnErrors" != "y" ]]; then
Manuel Carrasco MoƱino3d8aa6e2014-10-11 10:28:51 +020023 read -e -p"Error while deploying, ignore errors? (y/N): " continueOnErrors
rchandia@google.com96dc36b2011-09-09 17:31:05 +000024 if [[ "$continueOnErrors" != "y" ]]; then
25 finishAndCleanup
26 exit 1
27 fi
28 fi
29}
30
31function warnJavaDoc () {
32 echo "WARNING: Could not deploy JavaDoc for $1. Continuing"
33}
34
35# Appends to COMMIT_MESSAGE
36function maven-gwt() {
37 local gwtMavenVersion=$1
38 shift
Thomas Broyer2c8f8392015-12-01 12:55:48 +010039 local jsinteropMavenVersion=$1
40 shift
rchandia@google.com96dc36b2011-09-09 17:31:05 +000041 local gwtSdkArchive=$1
42 shift
rchandia@google.com96dc36b2011-09-09 17:31:05 +000043 local mavenRepoUrl=$1
44 shift
45 local mavenRepoId=$1
46 shift
47
48 if [[ "$mavenRepoUrl" == "" ]]; then
49 echo "ERROR: Incorrect parameters to maven-gwt"
50 exit 1
51 fi
52
53 if [[ "$mavenRepoId" == "" ]]; then
54 if [[ "`expr match $mavenRepoUrl "file://"`" == 0 ]]; then
55 echo "ERROR: maven-gwt: mavenRepoId is not specified, and the mavenRepoUrl is not local (does not start with file://)"
56 exit 1
57 fi
58 # set a dummy repo id
59 mavenRepoId=local
60 fi
61
62 set-random-dir
63 echo "Unzipping $gwtSdkArchive to $RANDOM_DIR"
64 unzip -q $gwtSdkArchive -d $RANDOM_DIR || exit 1
65
66 GWT_EXTRACT_DIR=`ls $RANDOM_DIR | tail -n1`
67 GWT_EXTRACT_DIR=$RANDOM_DIR/$GWT_EXTRACT_DIR
68
69 JAVADOC_FILE_PATH=$RANDOM_DIR/gwt-javadoc.jar
70 jar cf $JAVADOC_FILE_PATH -C $GWT_EXTRACT_DIR/doc/javadoc .
Thomas Broyerb235e412014-10-21 10:56:18 +020071
Thomas Broyer2c8f8392015-12-01 12:55:48 +010072 # Create a dummy javadoc JAR for JsInterop (gwt-javadoc is too heavy)
73 JSINTEROP_JAVADOC_FILE_PATH=$RANDOM_DIR/jsinterop-javadoc.jar
74 jar cf $JSINTEROP_JAVADOC_FILE_PATH -C $pomDir/jsinterop README.javadoc
75
rchandia@google.com96dc36b2011-09-09 17:31:05 +000076 # Generate POMs with correct version
77 for template in `find $pomDir -name pom-template.xml`
78 do
79 dir=`dirname $template`
80 pushd $dir > /dev/null
Thomas Broyer2c8f8392015-12-01 12:55:48 +010081 sed -e "s|\${gwtVersion}|$gwtMavenVersion|g" -e "s|\${jsinteropVersion}|$jsinteropMavenVersion|g" pom-template.xml >pom.xml
rchandia@google.com96dc36b2011-09-09 17:31:05 +000082 popd > /dev/null
83 done
84
Thomas Broyera5f3c012016-07-02 01:20:33 +020085 # Silently skip Elemental if it doesn't exist
86 gwtLibs='dev user servlet codeserver'
87 if [ -f $GWT_EXTRACT_DIR/gwt-elemental.jar ]; then
88 gwtLibs="${gwtLibs} elemental"
89 fi
90
91 jsinteropLibs='annotations'
92
93 # Create jsinterop libs
94 for i in $jsinteropLibs
95 do
96 echo "Creating jsinterop-${i}.jar and jsinterop-${i}-sources.jar"
97 zip $GWT_EXTRACT_DIR/gwt-user.jar --copy --out $GWT_EXTRACT_DIR/jsinterop-${i}.jar \
98 "jsinterop/${i}/*"
99 zip -d $GWT_EXTRACT_DIR/jsinterop-${i}.jar \
100 "jsinterop/${i}/*.java" "jsinterop/${i}/*.gwt.xml"
101 zip $GWT_EXTRACT_DIR/gwt-user.jar --copy --out $GWT_EXTRACT_DIR/jsinterop-${i}-sources.jar \
102 "jsinterop/${i}/*.java" "jsinterop/${i}/*.gwt.xml"
103 echo "Removing jsinterop/${i} from gwt-user"
104 zip -d $GWT_EXTRACT_DIR/gwt-user.jar "jsinterop/${i}/*"
105 echo "Removing jsinterop/${i} from gwt-servlet"
106 zip -d $GWT_EXTRACT_DIR/gwt-servlet.jar "jsinterop/${i}/*"
107 done
108
Thomas Broyer9a076fe2016-07-11 10:55:50 +0200109 echo "Removing bundled third-parties from gwt-dev"
110 zip -q $GWT_EXTRACT_DIR/gwt-dev.jar --copy --out $GWT_EXTRACT_DIR/gwt-dev-trimmed.jar \
111 "com/google/gwt/*" "org/eclipse/jdt/*"
112 mv $GWT_EXTRACT_DIR/gwt-dev-trimmed.jar $GWT_EXTRACT_DIR/gwt-dev.jar
113 echo "Removing bundled third-parties from gwt-user"
114 zip -q $GWT_EXTRACT_DIR/gwt-user.jar --copy --out $GWT_EXTRACT_DIR/gwt-user-trimmed.jar \
115 "com/google/gwt/*" "com/google/web/bindery/*" "javaemul/*" \
116 "javax/validation/*" "org/hibernate/validator/*" \
117 "org/w3c/flute/*"
118 mv $GWT_EXTRACT_DIR/gwt-user-trimmed.jar $GWT_EXTRACT_DIR/gwt-user.jar
skybrian@google.com213a4d92012-06-14 18:58:38 +0000119
skybrian@google.comdaebbcb2012-06-15 16:42:27 +0000120 for i in $gwtLibs
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000121 do
122 CUR_FILE=`ls $GWT_EXTRACT_DIR/gwt-${i}.jar`
Thomas Broyerb235e412014-10-21 10:56:18 +0200123
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000124 # Get rid of the INDEX.LIST file, since it's going to be out of date
125 # once we rename the jar files for Maven
Thomas Broyera3636352016-07-12 12:43:12 +0200126 if unzip -l $CUR_FILE META-INF/INDEX.LIST >/dev/null; then
Thomas Broyer9a076fe2016-07-11 10:55:50 +0200127 echo "Removing INDEX.LIST from gwt-${i}"
128 zip -d $CUR_FILE META-INF/INDEX.LIST
129 fi
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000130
Thomas Broyera5f3c012016-07-02 01:20:33 +0200131 SOURCES_FILE=$GWT_EXTRACT_DIR/gwt-${i}-sources.jar
Thomas Broyera3636352016-07-12 12:43:12 +0200132 if unzip -l $CUR_FILE '*.java' >/dev/null; then
133 zip -q $CUR_FILE --copy --out $SOURCES_FILE "*.java"
134 fi
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000135 done
Thomas Broyerb235e412014-10-21 10:56:18 +0200136
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000137 # push parent poms
138 maven-deploy-file $mavenRepoUrl $mavenRepoId $pomDir/gwt/pom.xml $pomDir/gwt/pom.xml
139
skybrian@google.comdaebbcb2012-06-15 16:42:27 +0000140 for i in $gwtLibs
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000141 do
142 CUR_FILE=`ls $GWT_EXTRACT_DIR/gwt-${i}.jar`
143 gwtPomFile=$pomDir/gwt/gwt-$i/pom.xml
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000144 SOURCES_FILE=gwt-${i}-sources.jar
Thomas Broyera5f3c012016-07-02 01:20:33 +0200145 SOURCES_PATH_FILE=$GWT_EXTRACT_DIR/$SOURCES_FILE
Thomas Broyerb235e412014-10-21 10:56:18 +0200146 # If there are no sources, use gwt-user sources.
147 # This is a bit hacky but Sonatype requires a
148 # source jar for Central, and lack of sources
149 # should only happen for gwt-servlet which is
150 # basically a subset of gwt-user.
Colin Alworthd1382272013-10-14 23:10:53 -0500151 if [ ! -f $SOURCES_PATH_FILE ]; then
Thomas Broyera5f3c012016-07-02 01:20:33 +0200152 SOURCES_PATH_FILE=$GWT_EXTRACT_DIR/gwt-user-sources.jar
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000153 fi
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000154
Colin Alworthd1382272013-10-14 23:10:53 -0500155 maven-deploy-file $mavenRepoUrl $mavenRepoId "$CUR_FILE" $gwtPomFile "$JAVADOC_FILE_PATH" "$SOURCES_PATH_FILE" || die
156 done
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000157
158 # Deploy RequestFactory jars
159 maven-deploy-file $mavenRepoUrl $mavenRepoId $pomDir/requestfactory/pom.xml $pomDir/requestfactory/pom.xml || die
160
161 for i in client server apt
162 do
Colin Alworthd1382272013-10-14 23:10:53 -0500163 maven-deploy-file $mavenRepoUrl $mavenRepoId $GWT_EXTRACT_DIR/requestfactory-${i}.jar $pomDir/requestfactory/${i}/pom.xml \
164 $JAVADOC_FILE_PATH $GWT_EXTRACT_DIR/requestfactory-${i}-src.jar \
165 || die
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000166 done
167
Thomas Broyer2c8f8392015-12-01 12:55:48 +0100168 # Deploy jsInterop jars
169 maven-deploy-file $mavenRepoUrl $mavenRepoId $pomDir/jsinterop/pom.xml $pomDir/jsinterop/pom.xml || die
170
171 for i in $jsinteropLibs
172 do
Thomas Broyera5f3c012016-07-02 01:20:33 +0200173 maven-deploy-file $mavenRepoUrl $mavenRepoId $GWT_EXTRACT_DIR/jsinterop-${i}.jar $pomDir/jsinterop/${i}/pom.xml \
174 $JSINTEROP_JAVADOC_FILE_PATH $GWT_EXTRACT_DIR/jsinterop-${i}-sources.jar \
Thomas Broyer2c8f8392015-12-01 12:55:48 +0100175 || die
176 done
177
rchandia@google.com96dc36b2011-09-09 17:31:05 +0000178 finishAndCleanup
179}