Split JsInterop annotations into their own JAR when deploying to Maven
This reapplies I4ccaff237a682ac45e6225f91908da605eff2aa5 with fixes
Change-Id: I6e5c07e97bbba7d93c03de445c21e0970f527227
diff --git a/maven/lib-gwt.sh b/maven/lib-gwt.sh
index fc237fb..092a375 100644
--- a/maven/lib-gwt.sh
+++ b/maven/lib-gwt.sh
@@ -20,7 +20,7 @@
rm -rf $jarExpandDir-${i}
done
# Remove POMs & ASCs, leaving only templates
- find $pomDir -name pom.xml -o -name pom.xml.asc | xargs rm
+ find $pomDir -name pom.xml -o -name pom.xml.asc -delete
fi
}
@@ -44,6 +44,8 @@
function maven-gwt() {
local gwtMavenVersion=$1
shift
+ local jsinteropMavenVersion=$1
+ shift
local gwtSdkArchive=$1
shift
local mavenRepoUrl=$1
@@ -75,6 +77,10 @@
JAVADOC_FILE_PATH=$RANDOM_DIR/gwt-javadoc.jar
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
+
jarExpandDir=/tmp/tmp-jar-expand-dir-$RANDOM
# Generate POMs with correct version
@@ -82,7 +88,7 @@
do
dir=`dirname $template`
pushd $dir > /dev/null
- sed "s|\${gwtVersion}|$gwtMavenVersion|g" pom-template.xml >pom.xml
+ sed -e "s|\${gwtVersion}|$gwtMavenVersion|g" -e "s|\${jsinteropVersion}|$jsinteropMavenVersion|g" pom-template.xml >pom.xml
popd > /dev/null
done
@@ -96,6 +102,8 @@
gwtLibs="${gwtLibs} elemental"
fi
+ jsinteropLibs='annotations'
+
for i in $gwtLibs
do
CUR_FILE=`ls $GWT_EXTRACT_DIR/gwt-${i}.jar`
@@ -115,10 +123,32 @@
pushd $curExpandDir > /dev/null
rm -rf javafilelist
- find . -name "*.java" -print > 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
done
@@ -153,6 +183,15 @@
|| 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 $jarExpandDir-user/jsinterop-${i}.jar $pomDir/jsinterop/${i}/pom.xml \
+ $JSINTEROP_JAVADOC_FILE_PATH $jarExpandDir-user/jsinterop-${i}-sources.jar \
+ || die
+ done
+
finishAndCleanup
}
-
diff --git a/maven/poms/gwt/gwt-user/pom-template.xml b/maven/poms/gwt/gwt-user/pom-template.xml
index 44562ee..577a821 100644
--- a/maven/poms/gwt/gwt-user/pom-template.xml
+++ b/maven/poms/gwt/gwt-user/pom-template.xml
@@ -14,6 +14,15 @@
<version>${gwtVersion}</version>
<dependencies>
<dependency>
+ <groupId>com.google.jsinterop</groupId>
+ <artifactId>jsinterop-annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.google.jsinterop</groupId>
+ <artifactId>jsinterop-annotations</artifactId>
+ <classifier>sources</classifier>
+ </dependency>
+ <dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
diff --git a/maven/poms/gwt/pom-template.xml b/maven/poms/gwt/pom-template.xml
index 43f2423..901ee93 100644
--- a/maven/poms/gwt/pom-template.xml
+++ b/maven/poms/gwt/pom-template.xml
@@ -55,6 +55,13 @@
<scope>import</scope>
</dependency>
<dependency>
+ <groupId>com.google.jsinterop</groupId>
+ <artifactId>jsinterop</artifactId>
+ <version>${jsinteropVersion}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
diff --git a/maven/poms/jsinterop/README.javadoc b/maven/poms/jsinterop/README.javadoc
new file mode 100644
index 0000000..6994981
--- /dev/null
+++ b/maven/poms/jsinterop/README.javadoc
@@ -0,0 +1,5 @@
+This is an empty javadoc JAR in accordance with
+http://central.sonatype.org/pages/requirements.html
+
+Please refer to the sources for documentation,
+or the com.google.gwt:gwt-user javadoc.
diff --git a/maven/poms/jsinterop/annotations/pom-template.xml b/maven/poms/jsinterop/annotations/pom-template.xml
new file mode 100644
index 0000000..f7d31d4
--- /dev/null
+++ b/maven/poms/jsinterop/annotations/pom-template.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.google.jsinterop</groupId>
+ <artifactId>jsinterop</artifactId>
+ <version>${jsinteropVersion}</version>
+ </parent>
+ <groupId>com.google.jsinterop</groupId>
+ <artifactId>jsinterop-annotations</artifactId>
+ <packaging>jar</packaging>
+ <version>${jsinteropVersion}</version>
+</project>
diff --git a/maven/poms/jsinterop/pom-template.xml b/maven/poms/jsinterop/pom-template.xml
new file mode 100644
index 0000000..fe7ec80
--- /dev/null
+++ b/maven/poms/jsinterop/pom-template.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.sonatype.oss</groupId>
+ <artifactId>oss-parent</artifactId>
+ <version>4</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.google.jsinterop</groupId>
+ <artifactId>jsinterop</artifactId>
+ <packaging>pom</packaging>
+ <name>JsInterop</name>
+ <url>http://www.gwtproject.org/</url>
+ <version>${jsinteropVersion}</version>
+ <licenses>
+ <license>
+ <name>GWT Terms</name>
+ <url>http://www.gwtproject.org/terms.html</url>
+ </license>
+ </licenses>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>com.google.jsinterop</groupId>
+ <artifactId>jsinterop-annotations</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.jsinterop</groupId>
+ <artifactId>jsinterop-annotations</artifactId>
+ <version>${project.version}</version>
+ <classifier>sources</classifier>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
diff --git a/maven/push-gwt.sh b/maven/push-gwt.sh
index c2064b9..9fe55f5 100755
--- a/maven/push-gwt.sh
+++ b/maven/push-gwt.sh
@@ -6,7 +6,7 @@
# GWT_MAVEN_REPO_ID = a server id in your .m2/settings.xml with remote repo username and password
#
# Sonatype staging repo (promotes to Maven Central)
-# GWT_MAVEN_REPO_URL=https://oss.sonatype.org/service/local/staging/deploy/maven2/
+# GWT_MAVEN_REPO_URL=https://oss.sonatype.org/service/local/staging/deploy/maven2/
#
# Sonatype Google SNAPSHOTs repo (can only deploy SNAPSHOTs here, and they are immediately public)
# GWT_MAVEN_REPO_URL=https://oss.sonatype.org/content/repositories/google-snapshots/
@@ -35,6 +35,7 @@
# use GWT_VERSION to specify the default version or get it from the file name
gwtVersionDefault=${GWT_VERSION:=$(expr "$gwtPathDefault" : '.*gwt-\('$VERSION_REGEX'\)\.zip')}
+jsinteropVersionDefault=${JSINTEROP_VERSION:=1.0.0-SNAPSHOT}
# prompt for info
read -e -p"GWT version for Maven (${gwtVersionDefault:-ex: 2.8.0-SNAPSHOT}): " gwtVersion
@@ -44,6 +45,13 @@
exit 1
fi
+read -e -p"JsInterop version for Maven (${jsinteropVersionDefault:-ex: 1.0.0-SNAPSHOT}): " jsinteropVersion
+jsinteropVersion=${jsinteropVersion:=$jsinteropVersionDefault}
+if ! expr "$jsinteropVersion" : "$VERSION_REGEX" >/dev/null; then
+ echo "Please enter a version of the form x.y.z or x.y.z-abc"
+ exit 1
+fi
+
read -e -p"Path to GWT distro zip $gwtPathPrompt: " gwtPath
gwtPath=${gwtPath:=$gwtPathDefault}
if [[ ! -f $gwtPath ]]; then
@@ -65,6 +73,7 @@
gpgPassphrase=${gpgPassphrase:=$GWT_GPG_PASS}
maven-gwt "$gwtVersion" \
+ "$jsinteropVersion" \
"$gwtPath" \
"$repoUrl" \
"$repoId"
diff --git a/user/src/com/google/gwt/core/Core.gwt.xml b/user/src/com/google/gwt/core/Core.gwt.xml
index 9a64da2..fdd1522 100644
--- a/user/src/com/google/gwt/core/Core.gwt.xml
+++ b/user/src/com/google/gwt/core/Core.gwt.xml
@@ -38,6 +38,7 @@
<inherits name="com.google.gwt.emul.Emulation" />
<inherits name="com.google.gwt.core.StackTrace" />
<inherits name="com.google.gwt.core.AsyncFragmentLoader" />
+ <inherits name="jsinterop.annotations.Annotations" />
<source path="client" />
<source path="shared" />
diff --git a/user/src/jsinterop/annotations/Annotations.gwt.xml b/user/src/jsinterop/annotations/Annotations.gwt.xml
new file mode 100644
index 0000000..2b4b77e
--- /dev/null
+++ b/user/src/jsinterop/annotations/Annotations.gwt.xml
@@ -0,0 +1,3 @@
+<module>
+ <source path="" />
+</module>