diff --git a/archetypes/archetype-tools/pom.xml b/archetypes/archetype-tools/pom.xml
index f6c6bda4a6ed..ad797b6547a3 100644
--- a/archetypes/archetype-tools/pom.xml
+++ b/archetypes/archetype-tools/pom.xml
@@ -25,7 +25,7 @@
4.0.0
archetype-tools
-
+ AWS Java SDK :: Archetype Tools
diff --git a/bom-internal/pom.xml b/bom-internal/pom.xml
index 03aa367965b7..21a33f079d61 100644
--- a/bom-internal/pom.xml
+++ b/bom-internal/pom.xml
@@ -25,7 +25,7 @@
4.0.0
bom-internal
-
+ AWS Java SDK :: Bill of Materials Internal
diff --git a/buildspecs/release-to-maven-central.yml b/buildspecs/release-to-maven-central.yml
new file mode 100644
index 000000000000..bf7c46fddd6a
--- /dev/null
+++ b/buildspecs/release-to-maven-central.yml
@@ -0,0 +1,57 @@
+version: 0.2
+
+phases:
+ install:
+ commands:
+ - pip install awscli --upgrade --user
+
+ pre_build:
+ commands:
+ - ROOT=`pwd`
+ - SETTINGS_XML_TEMPLATE=buildspecs/resources/maven-central-release-settings.xml
+ - SETTINGS_XML=release-settings-final.xml
+ - SDK_SIGNING_GPG_SECRING=secring.gpg
+ - SDK_SIGNING_GPG_SECRING_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:sdk-signing-gpg-secret-ring-9d0YXc"
+ - SDK_SIGNING_GPG_KEYNAME_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:sdk-signing-gpg-keyname-wFsOOg"
+ - SDK_SIGNING_GPG_PASSPHRASE_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:sdk-signing-gpg-passphrase-A0H1Kq"
+ - SONATYPE_PASSWORD_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:maven-central-publishing-password-yktnUc"
+ - SONATYPE_USERNAME_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:maven-central-publishing-username-RDvOnW"
+ - MODULES_TO_SKIP="protocol-tests,protocol-tests-core,codegen-generated-classes-test,sdk-benchmarks,module-path-tests,tests-coverage-reporting,stability-tests,sdk-native-image-test,auth-tests,s3-benchmarks,http-client-benchmarks,region-testing,old-client-version-compatibility-test,crt-unavailable-tests,bundle-shading-tests,v2-migration-tests,architecture-tests,s3-tests"
+
+ build:
+ commands:
+ - RELEASE_VERSION=`mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec`
+ - ARTIFACT_URL="https://repo1.maven.org/maven2/software/amazon/awssdk/aws-sdk-java/$RELEASE_VERSION/"
+ - |
+ if ! curl -f --head $ARTIFACT_URL; then
+ SONATYPE_USERNAME=`aws secretsmanager get-secret-value --secret-id $SONATYPE_USERNAME_ARN --query SecretString --output text`
+ SONATYPE_PASSWORD=`aws secretsmanager get-secret-value --secret-id $SONATYPE_PASSWORD_ARN --query SecretString --output text`
+ SDK_SIGNING_GPG_KEYNAME=`aws secretsmanager get-secret-value --secret-id $SDK_SIGNING_GPG_KEYNAME_ARN --query SecretString --output text`
+ SDK_SIGNING_GPG_PASSPHRASE=`aws secretsmanager get-secret-value --secret-id $SDK_SIGNING_GPG_PASSPHRASE_ARN --query SecretString --output text`
+ aws secretsmanager get-secret-value --secret-id $SDK_SIGNING_GPG_SECRING_ARN --query SecretBinary --output text | base64 -d > $SDK_SIGNING_GPG_SECRING
+ gpg --passphrase $SDK_SIGNING_GPG_PASSPHRASE --batch --import $SDK_SIGNING_GPG_SECRING
+
+ cat $SETTINGS_XML_TEMPLATE | \
+ awk 'BEGIN { var=ENVIRON["SONATYPE_USERNAME"] } { gsub("\\$SONATYPE_USERNAME", var, $0); print }' | \
+ awk 'BEGIN { var=ENVIRON["SONATYPE_PASSWORD"] } { gsub("\\$SONATYPE_PASSWORD", var, $0); print }' | \
+ awk 'BEGIN { var=ENVIRON["SDK_SIGNING_GPG_PASSPHRASE"] } { gsub("\\$SDK_SIGNING_GPG_PASSPHRASE", var, $0); print }' | \
+ awk 'BEGIN { var=ENVIRON["SDK_SIGNING_GPG_KEYNAME"] } { gsub("\\$SDK_SIGNING_GPG_KEYNAME", var, $0); print }' > \
+ $SETTINGS_XML
+
+ # Convert comma-separated list to space-separated list with !: prefix for each module
+ MODULES_TO_SKIP_FORMATTED=$(echo $MODULES_TO_SKIP | sed 's/,/,!:/g' | sed 's/^/!:/')
+
+ mvn clean deploy -B -s $SETTINGS_XML -Pcentral-portal-publishing -DperformRelease -DautoPublish=true -DdeploymentName="software.amazon.awssdk-$RELEASE_VERSION" -Dspotbugs.skip -DskipTests -Dcheckstyle.skip -Djapicmp.skip -Ddoclint=none -DstagingProgressTimeoutMinutes=30 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -pl $MODULES_TO_SKIP_FORMATTED
+
+ # Report staging folder size to CloudWatch
+ if [ -d "target/central-staging" ]; then
+ STAGING_SIZE_MB=$(du -sm target/central-staging | cut -f1)
+ aws cloudwatch put-metric-data \
+ --namespace "AwsJavaSdkRelease" \
+ --metric-data "MetricName=StagingFolderSize,Value=$STAGING_SIZE_MB,Unit=Megabytes"
+ else
+ echo "Staging folder target/central-staging not found"
+ fi
+ else
+ echo "This version was already released."
+ fi
diff --git a/buildspecs/resources/maven-central-release-settings.xml b/buildspecs/resources/maven-central-release-settings.xml
new file mode 100644
index 000000000000..4100be1970b6
--- /dev/null
+++ b/buildspecs/resources/maven-central-release-settings.xml
@@ -0,0 +1,21 @@
+
+
+
+ central
+ $SONATYPE_USERNAME
+ $SONATYPE_PASSWORD
+
+
+
+
+ central-portal-publishing
+
+ false
+
+
+ $SDK_SIGNING_GPG_KEYNAME
+ $SDK_SIGNING_GPG_PASSPHRASE
+
+
+
+
diff --git a/bundle-sdk/pom.xml b/bundle-sdk/pom.xml
index 71c26e4c7dc6..1fe95e956850 100644
--- a/bundle-sdk/pom.xml
+++ b/bundle-sdk/pom.xml
@@ -238,7 +238,7 @@
-
+
publishing
@@ -268,6 +268,36 @@
+
+ central-portal-publishing
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+ true
+
+
+
+ maven-javadoc-plugin
+
+
+ javadoc-jar
+ package
+
+ jar
+
+
+
+
+ ${basedir}/../core/profiles/src/main/java/software/amazon/awssdk/profiles;${basedir}/../core/sdk-core/src/main/java/software/amazon/awssdk/core
+ false
+
+
+
+
+
diff --git a/bundle/pom.xml b/bundle/pom.xml
index 165435269468..eecf9976ee5b 100644
--- a/bundle/pom.xml
+++ b/bundle/pom.xml
@@ -90,8 +90,47 @@
-
+
+ central-portal-publishing
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+ true
+
+
+
+ maven-javadoc-plugin
+
+
+ javadoc-jar
+ package
+
+ jar
+
+
+
+
+ ${basedir}/../core/profiles/src/main/java/software/amazon/awssdk/profiles;${basedir}/../core/sdk-core/src/main/java/software/amazon/awssdk/core
+ false
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ software.amazon.awssdk:bundle-sdk
+ software.amazon.awssdk:bundle-logging-bridge
+
+
+
+
+
+
publishing
diff --git a/pom.xml b/pom.xml
index b54092bffb0f..f26a0bf55cd2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -162,6 +162,7 @@
1.6
8.42
0.8.12
+ 0.8.0
1.6.8
1.6.0
2.8.2
@@ -746,7 +747,46 @@
true
-
+
+
+ central-portal-publishing
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ ${maven-gpg-plugin.version}
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+ --batch
+ --pinentry-mode
+ loopback
+
+
+
+
+ org.sonatype.central
+ central-publishing-maven-plugin
+ ${central-publishing-maven-plugin.version}
+ true
+
+ central
+
+
+
+
+
publishing