diff --git a/util/mvn-deploy.sh b/util/deploy-to-maven-central.sh similarity index 60% rename from util/mvn-deploy.sh rename to util/deploy-to-maven-central.sh index c95988094a6..1cd36893800 100755 --- a/util/mvn-deploy.sh +++ b/util/deploy-to-maven-central.sh @@ -15,13 +15,6 @@ if [[ ! $version_name =~ ^2\. ]]; then exit 2 fi -# Rename snapshot version and sanity check that it doesn't exist in any poms -sed -i s/HEAD-SNAPSHOT/$version_name/g `find . -name pom.xml` -if [[ $(git grep HEAD-SNAPSHOT -- '*pom.xml') ]]; then - echo "Snapshots found in poms!" - exit 3 -fi - #validate key keystatus=$(gpg --list-keys | grep ${key} | awk '{print $1}') if [ "${keystatus}" != "pub" ]; then @@ -32,16 +25,18 @@ if [ "${keystatus}" != "pub" ]; then exit 64 fi -mvn "$@" -P '!examples' -P sonatype-oss-release \ - -Dgpg.skip=false -Dgpg.keyname=${key} \ - clean clean site:jar deploy +sh $(dirname $0)/execute-deploy.sh \ + "$version_name" \ + "sonatype-nexus-staging" \ + "https://oss.sonatype.org/service/local/staging/deploy/maven2/" \ + "-Dgpg.keyname=${key}" # Publish javadocs to gh-pages -mvn javadoc:aggregate -P!examples -DexcludePackageNames=*.internal +bazel build //:user-docs.jar git clone --quiet --branch gh-pages \ https://github.com/google/dagger gh-pages > /dev/null cd gh-pages -cp -r ../target/site/apidocs api/$version_name +unzip ../bazel-genfiles/user-docs.jar -d api/$version_name git add api/$version_name git commit -m "$version_name docs" git push origin gh-pages diff --git a/util/execute-deploy.sh b/util/execute-deploy.sh new file mode 100755 index 00000000000..ce88a53a35f --- /dev/null +++ b/util/execute-deploy.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +VERSION_NAME=$1 +REPOSITORY_ID=$2 +REPOSITORY_URL=$3 +EXTRA_MAVEN_ARGS=$4 + +python $(dirname $0)/maven/generate_poms.py $VERSION_NAME \ + //core/src/main/java/dagger:core \ + //compiler:compiler \ + //producers:producers \ + //java/dagger/android:android \ + //java/dagger/android/support:support + +deploy_library() { + if [[ $1 == "--shaded" ]]; then + library=$2 + library_output=bazel-genfiles/$library + srcjar=$3 + shift 3 + else + library=$1 + library_output=bazel-bin/$library + srcjar="${library%.jar}-src.jar" + shift 1 + fi + javadoc=$1 + pomfile=$2 + bazel build $library $srcjar $javadoc + mvn gpg:sign-and-deploy-file \ + -Dfile=$library_output \ + -DrepositoryId=$REPOSITORY_ID \ + -Durl=$REPOSITORY_URL \ + -Djavadoc=bazel-genfiles/$javadoc \ + -DpomFile=$pomfile \ + -Dsources=bazel-bin/$srcjar \ + $EXTRA_MAVEN_ARGS +} + +deploy_library \ + core/src/main/java/dagger/libcore.jar \ + core/src/main/java/dagger/core-javadoc.jar \ + dagger.pom.xml + +deploy_library \ + --shaded shaded_compiler.jar compiler/libcompiler-src.jar \ + compiler/compiler-javadoc.jar \ + dagger-compiler.pom.xml + +deploy_library \ + producers/libproducers.jar \ + producers/producers-javadoc.jar \ + dagger-producers.pom.xml + +deploy_library \ + java/dagger/android/libandroid.jar \ + java/dagger/android/android-javadoc.jar \ + dagger-android.pom.xml + +deploy_library \ + java/dagger/android/support/libsupport.jar \ + java/dagger/android/support/support-javadoc.jar \ + dagger-android-support.pom.xml diff --git a/util/generate-latest-docs.sh b/util/generate-latest-docs.sh index 8846d9b542d..bf5f7b9ca03 100755 --- a/util/generate-latest-docs.sh +++ b/util/generate-latest-docs.sh @@ -5,8 +5,7 @@ if [ "$TRAVIS_REPO_SLUG" == "google/dagger" ] && \ [ "$TRAVIS_PULL_REQUEST" == "false" ] && \ [ "$TRAVIS_BRANCH" == "master" ]; then echo -e "Publishing javadoc...\n" - mvn javadoc:aggregate -P!examples -DexcludePackageNames=*.internal - TARGET="$(pwd)/target" + bazel build //:user-docs.jar cd $HOME git clone --quiet --branch=gh-pages https://${GH_TOKEN}@github.com/google/dagger gh-pages > /dev/null @@ -16,7 +15,7 @@ if [ "$TRAVIS_REPO_SLUG" == "google/dagger" ] && \ git config --global user.name "travis-ci" git rm -rf api/latest mkdir -p api - mv ${TARGET}/site/apidocs api/latest + unzip ../bazel-genfiles/user-docs.jar -d api/latest git add -f api/latest git commit -m "Lastest javadoc on successful travis build $TRAVIS_BUILD_NUMBER auto-pushed to gh-pages" git push -fq origin gh-pages > /dev/null diff --git a/util/maven/generate_poms.py b/util/maven/generate_poms.py index c9dcc42eee3..103fa7fb519 100644 --- a/util/maven/generate_poms.py +++ b/util/maven/generate_poms.py @@ -13,11 +13,13 @@ # limitations under the License. import os +import re from subprocess import check_output import sys from workspace_parser import maven_artifacts from xml_formatting import generate_pom + def _shell(command): output = check_output(command, shell=True, @@ -62,10 +64,14 @@ def pom_deps(label): 'name': 'Dagger Producers', 'artifact': 'dagger-producers', }, - '//android/src/main/java/dagger/android:android': { + '//java/dagger/android:android': { 'name': 'Dagger Android', 'artifact': 'dagger-android', - 'alias': '//android:android', + 'packaging': 'aar', + }, + '//java/dagger/android/support:support': { + 'name': 'Dagger Android Support', + 'artifact': 'dagger-android-support', 'packaging': 'aar', }, } @@ -73,15 +79,15 @@ def pom_deps(label): class UnknownDependencyException(Exception): pass def main(): - if len(sys.argv) <= 3: + if len(sys.argv) < 3: print 'Usage: %s ...' % sys.argv[0] sys.exit(1) version = sys.argv[1] artifacts = maven_artifacts() - artifacts['@androidsdk//com.android.support:support-annotations-24.2.0'] = ( - 'com.android.support:support-annotations:24.2.0' - ) + + android_sdk_pattern = re.compile( + r'@androidsdk//([a-z.-]*):([a-z0-9-]*)-([0-9.]*)') for label, metadata in METADATA.iteritems(): artifacts[label] = ( @@ -93,6 +99,9 @@ def main(): def artifact_for_dep(label): if label in artifacts: return artifacts[label] + match = android_sdk_pattern.match(label) + if match: + return ':'.join(match.groups()) raise UnknownDependencyException('No artifact found for %s' % label) for arg in sys.argv[2:]: diff --git a/util/publish-snapshot-on-commit.sh b/util/publish-snapshot-on-commit.sh index 8173fbb5271..a571760f533 100755 --- a/util/publish-snapshot-on-commit.sh +++ b/util/publish-snapshot-on-commit.sh @@ -6,7 +6,10 @@ if [ "$TRAVIS_REPO_SLUG" == "google/dagger" ] && \ [ "$TRAVIS_BRANCH" == "master" ]; then echo -e "Publishing maven snapshot...\n" - mvn clean source:jar deploy --settings="util/settings.xml" -DskipTests=true -Dinvoker.skip=true -Dmaven.javadoc.skip=true + sh $(dirname $0)/execute-deploy.sh \ + "HEAD-SNAPSHOT" \ + "sonatype-nexus-snapshots" \ + "https://oss.sonatype.org/content/repositories/snapshots" echo -e "Published maven snapshot" else