blob: e8bad8c079b492315566d344cf737e639a9d97ad [file] [log] [blame]
source lib-maven-deploy.sh
function finishAndCleanup () {
if [[ $thereHaveBeenErrors ]]; then
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "WARNING: Errors while deploying files, examine output above."
echo "Leaving intermediate files at:"
echo "$RANDOM_DIR"
find $pomDir -name pom.xml -o -name pom.xml.asc
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
else
# Clean up
rm -rf $RANDOM_DIR
# Remove POMs & ASCs, leaving only templates
find $pomDir -name pom.xml -o -name pom.xml.asc -delete
fi
}
function die () {
thereHaveBeenErrors=1
if [[ "$continueOnErrors" != "y" ]]; then
read -e -p"Error while deploying, ignore errors? (y/N): " continueOnErrors
if [[ "$continueOnErrors" != "y" ]]; then
finishAndCleanup
exit 1
fi
fi
}
function warnJavaDoc () {
echo "WARNING: Could not deploy JavaDoc for $1. Continuing"
}
# Appends to COMMIT_MESSAGE
function maven-gwt() {
local gwtMavenVersion=$1
shift
local jsinteropMavenVersion=$1
shift
local gwtSdkArchive=$1
shift
local mavenRepoUrl=$1
shift
local mavenRepoId=$1
shift
if [[ "$mavenRepoUrl" == "" ]]; then
echo "ERROR: Incorrect parameters to maven-gwt"
exit 1
fi
if [[ "$mavenRepoId" == "" ]]; then
if [[ "`expr match $mavenRepoUrl "file://"`" == 0 ]]; then
echo "ERROR: maven-gwt: mavenRepoId is not specified, and the mavenRepoUrl is not local (does not start with file://)"
exit 1
fi
# set a dummy repo id
mavenRepoId=local
fi
set-random-dir
echo "Unzipping $gwtSdkArchive to $RANDOM_DIR"
unzip -q $gwtSdkArchive -d $RANDOM_DIR || exit 1
GWT_EXTRACT_DIR=`ls $RANDOM_DIR | tail -n1`
GWT_EXTRACT_DIR=$RANDOM_DIR/$GWT_EXTRACT_DIR
JAVADOC_FILE_PATH=$RANDOM_DIR/gwt-javadoc.jar
[ -d $GWT_EXTRACT_DIR/doc/javadoc ] && jar cf $JAVADOC_FILE_PATH -C $GWT_EXTRACT_DIR/doc/javadoc .
# Create a dummy javadoc JAR for JsInterop (gwt-javadoc is too heavy)
JSINTEROP_JAVADOC_FILE_PATH=$RANDOM_DIR/jsinterop-javadoc.jar
jar cf $JSINTEROP_JAVADOC_FILE_PATH -C $pomDir/jsinterop README.javadoc
# Generate POMs with correct version
for template in `find $pomDir -name pom-template.xml`
do
dir=`dirname $template`
pushd $dir > /dev/null
sed -e "s|\${gwtVersion}|$gwtMavenVersion|g" -e "s|\${jsinteropVersion}|$jsinteropMavenVersion|g" pom-template.xml >pom.xml
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
echo "Removing bundled third-parties from gwt-dev"
zip -q $GWT_EXTRACT_DIR/gwt-dev.jar --copy --out $GWT_EXTRACT_DIR/gwt-dev-trimmed.jar \
"com/google/gwt/*" "org/eclipse/jdt/*"
mv $GWT_EXTRACT_DIR/gwt-dev-trimmed.jar $GWT_EXTRACT_DIR/gwt-dev.jar
echo "Removing bundled third-parties from gwt-user"
zip -q $GWT_EXTRACT_DIR/gwt-user.jar --copy --out $GWT_EXTRACT_DIR/gwt-user-trimmed.jar \
"com/google/gwt/*" "com/google/web/bindery/*" "javaemul/*" \
"javax/validation/*" "org/hibernate/validator/*" \
"org/w3c/flute/*"
mv $GWT_EXTRACT_DIR/gwt-user-trimmed.jar $GWT_EXTRACT_DIR/gwt-user.jar
for i in $gwtLibs
do
CUR_FILE=`ls $GWT_EXTRACT_DIR/gwt-${i}.jar`
# Get rid of the INDEX.LIST file, since it's going to be out of date
# once we rename the jar files for Maven
if unzip -l $CUR_FILE META-INF/INDEX.LIST >/dev/null; then
echo "Removing INDEX.LIST from gwt-${i}"
zip -d $CUR_FILE META-INF/INDEX.LIST
fi
SOURCES_FILE=$GWT_EXTRACT_DIR/gwt-${i}-sources.jar
if unzip -l $CUR_FILE '*.java' >/dev/null; then
zip -q $CUR_FILE --copy --out $SOURCES_FILE "*.java"
fi
done
# push parent poms
maven-deploy-file $mavenRepoUrl $mavenRepoId $pomDir/gwt/pom.xml $pomDir/gwt/pom.xml
for i in $gwtLibs
do
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=$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=$GWT_EXTRACT_DIR/gwt-user-sources.jar
fi
maven-deploy-file $mavenRepoUrl $mavenRepoId "$CUR_FILE" $gwtPomFile "$JAVADOC_FILE_PATH" "$SOURCES_PATH_FILE" || die
done
# Deploy RequestFactory jars
maven-deploy-file $mavenRepoUrl $mavenRepoId $pomDir/requestfactory/pom.xml $pomDir/requestfactory/pom.xml || die
for i in client server apt
do
maven-deploy-file $mavenRepoUrl $mavenRepoId $GWT_EXTRACT_DIR/requestfactory-${i}.jar $pomDir/requestfactory/${i}/pom.xml \
$JAVADOC_FILE_PATH $GWT_EXTRACT_DIR/requestfactory-${i}-src.jar \
|| die
done
# Deploy jsInterop jars
maven-deploy-file $mavenRepoUrl $mavenRepoId $pomDir/jsinterop/pom.xml $pomDir/jsinterop/pom.xml || die
for i in $jsinteropLibs
do
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
finishAndCleanup
}