Refactor creation of jsinterop and sources JARs for Maven
Uses "zip --copy" and "zip -d --out" instead of expanding the JARs
into a temporary dir and re-jarring them.
Change-Id: I8d9f4c4bb6b1a6c62a16fe9701c68bce2081aaae
diff --git a/maven/lib-gwt.sh b/maven/lib-gwt.sh
index 8e9e00c..7a66847 100644
--- a/maven/lib-gwt.sh
+++ b/maven/lib-gwt.sh
@@ -6,19 +6,11 @@
echo "WARNING: Errors while deploying files, examine output above."
echo "Leaving intermediate files at:"
echo "$RANDOM_DIR"
- for i in dev user servlet
- do
- echo "$jarExpandDir-${i}"
- done
find $pomDir -name pom.xml -o -name pom.xml.asc
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
else
# Clean up
rm -rf $RANDOM_DIR
- for i in dev user servlet
- do
- rm -rf $jarExpandDir-${i}
- done
# Remove POMs & ASCs, leaving only templates
find $pomDir -name pom.xml -o -name pom.xml.asc -delete
fi
@@ -81,8 +73,6 @@
JSINTEROP_JAVADOC_FILE_PATH=$RANDOM_DIR/jsinterop-javadoc.jar
jar cf $JSINTEROP_JAVADOC_FILE_PATH -C $pomDir/jsinterop README.javadoc
- jarExpandDir=/tmp/tmp-jar-expand-dir-$RANDOM
-
# Generate POMs with correct version
for template in `find $pomDir -name pom-template.xml`
do
@@ -92,6 +82,30 @@
popd > /dev/null
done
+ # Silently skip Elemental if it doesn't exist
+ gwtLibs='dev user servlet codeserver'
+ if [ -f $GWT_EXTRACT_DIR/gwt-elemental.jar ]; then
+ gwtLibs="${gwtLibs} elemental"
+ fi
+
+ jsinteropLibs='annotations'
+
+ # Create jsinterop libs
+ for i in $jsinteropLibs
+ do
+ echo "Creating jsinterop-${i}.jar and jsinterop-${i}-sources.jar"
+ zip $GWT_EXTRACT_DIR/gwt-user.jar --copy --out $GWT_EXTRACT_DIR/jsinterop-${i}.jar \
+ "jsinterop/${i}/*"
+ zip -d $GWT_EXTRACT_DIR/jsinterop-${i}.jar \
+ "jsinterop/${i}/*.java" "jsinterop/${i}/*.gwt.xml"
+ zip $GWT_EXTRACT_DIR/gwt-user.jar --copy --out $GWT_EXTRACT_DIR/jsinterop-${i}-sources.jar \
+ "jsinterop/${i}/*.java" "jsinterop/${i}/*.gwt.xml"
+ echo "Removing jsinterop/${i} from gwt-user"
+ zip -d $GWT_EXTRACT_DIR/gwt-user.jar "jsinterop/${i}/*"
+ echo "Removing jsinterop/${i} from gwt-servlet"
+ zip -d $GWT_EXTRACT_DIR/gwt-servlet.jar "jsinterop/${i}/*"
+ done
+
# Remove bundled third-parties from gwt-dev
echo "Removing ASM classes from gwt-dev"
zip -d $GWT_EXTRACT_DIR/gwt-dev.jar "org/objectweb/asm/*"
@@ -102,14 +116,6 @@
"META-INF/services/javax.servlet.*" "META-INF/services/javax.websocket.*" "META-INF/services/org.eclipse.jetty.*" "META-INF/services/org.apache.juli.*" \
"org/eclipse/jetty/*" "javax/servlet/*" "javax/el/*" "org/apache/jasper/*" "org/apache/el/*" "org/apache/juli/*" "org/apache/tomcat/*"
- # Silently skip Elemental if it doesn't exist
- gwtLibs='dev user servlet codeserver'
- if [ -f $GWT_EXTRACT_DIR/gwt-elemental.jar ]; then
- gwtLibs="${gwtLibs} elemental"
- fi
-
- jsinteropLibs='annotations'
-
for i in $gwtLibs
do
CUR_FILE=`ls $GWT_EXTRACT_DIR/gwt-${i}.jar`
@@ -119,43 +125,8 @@
echo "Removing INDEX.LIST from gwt-${i}"
zip -d $CUR_FILE META-INF/INDEX.LIST
- SOURCES_FILE=gwt-${i}-sources.jar
- curExpandDir=$jarExpandDir-${i}
-
- rm -rf $curExpandDir
- mkdir -p $curExpandDir
- unzip -q $CUR_FILE -d $curExpandDir
- chmod -R ugo+rwx $curExpandDir
- pushd $curExpandDir > /dev/null
-
- rm -rf javafilelist
- find . -name "*.java" > javafilelist
- if [ -s javafilelist ]; then
- jar cf $SOURCES_FILE @javafilelist
- fi
-
- if [[ "$i" == "user" ]]; then
- # Create jsinterop jars
- for i in $jsinteropLibs
- do
- # Get rid of JsInterop classes from gwt-user.jar and gwt-user-sources
- echo "Removing jsinterop/${i} from gwt-user"
- zip -d $CUR_FILE "jsinterop/${i}/*"
- echo "Removing jsinterop/${i} from gwt-user-sources"
- zip -d $SOURCES_FILE "jsinterop/${i}/*"
-
- rm -rf jsinterop-${i}-classfilelist jsinterop-${i}-javafilelist
- find "./jsinterop/${i}" -type f -not -name "*.java" -not -name "*.gwt.xml" > jsinterop-${i}-classfilelist
- if [ -s jsinterop-${i}-classfilelist ]; then
- jar cf jsinterop-${i}.jar @jsinterop-${i}-classfilelist
- fi
- find "./jsinterop/${i}" -name "*.java" -o -name "*.gwt.xml" > jsinterop-${i}-javafilelist
- if [ -s jsinterop-${i}-javafilelist ]; then
- jar cf jsinterop-${i}-sources.jar @jsinterop-${i}-javafilelist
- fi
- done
- fi
- popd > /dev/null
+ SOURCES_FILE=$GWT_EXTRACT_DIR/gwt-${i}-sources.jar
+ zip -q $CUR_FILE --copy --out $SOURCES_FILE "*.java"
done
# push parent poms
@@ -166,14 +137,14 @@
CUR_FILE=`ls $GWT_EXTRACT_DIR/gwt-${i}.jar`
gwtPomFile=$pomDir/gwt/gwt-$i/pom.xml
SOURCES_FILE=gwt-${i}-sources.jar
- SOURCES_PATH_FILE=$jarExpandDir-${i}/$SOURCES_FILE
+ SOURCES_PATH_FILE=$GWT_EXTRACT_DIR/$SOURCES_FILE
# If there are no sources, use gwt-user sources.
# This is a bit hacky but Sonatype requires a
# source jar for Central, and lack of sources
# should only happen for gwt-servlet which is
# basically a subset of gwt-user.
if [ ! -f $SOURCES_PATH_FILE ]; then
- SOURCES_PATH_FILE=$jarExpandDir-user/gwt-user-sources.jar
+ SOURCES_PATH_FILE=$GWT_EXTRACT_DIR/gwt-user-sources.jar
fi
maven-deploy-file $mavenRepoUrl $mavenRepoId "$CUR_FILE" $gwtPomFile "$JAVADOC_FILE_PATH" "$SOURCES_PATH_FILE" || die
@@ -194,8 +165,8 @@
for i in $jsinteropLibs
do
- maven-deploy-file $mavenRepoUrl $mavenRepoId $jarExpandDir-user/jsinterop-${i}.jar $pomDir/jsinterop/${i}/pom.xml \
- $JSINTEROP_JAVADOC_FILE_PATH $jarExpandDir-user/jsinterop-${i}-sources.jar \
+ maven-deploy-file $mavenRepoUrl $mavenRepoId $GWT_EXTRACT_DIR/jsinterop-${i}.jar $pomDir/jsinterop/${i}/pom.xml \
+ $JSINTEROP_JAVADOC_FILE_PATH $GWT_EXTRACT_DIR/jsinterop-${i}-sources.jar \
|| die
done