script to deploy to maven central
This commit is contained in:
74
scripts/maven-central-deploy.sh
Executable file
74
scripts/maven-central-deploy.sh
Executable file
@@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# This script deploys the built library to Maven Central.
|
||||||
|
# $GPG_KEY_ID must be set to a key ID
|
||||||
|
# $TOKEN_USERNAME and $TOKEN_PASSWORD must be set to your Maven Central token credentials
|
||||||
|
|
||||||
|
if [ -z $GPG_KEY_ID ]; then
|
||||||
|
echo "\$GPG_KEY_ID not set" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z $TOKEN_USERNAME ]; then
|
||||||
|
echo "\$TOKEN_USERNAME not set" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z $TOKEN_PASSWORD ]; then
|
||||||
|
echo "\$TOKEN_PASSWORD not set" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
POM=build/publications/maven/pom-default.xml
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ ! -e "${POM}" ]; then
|
||||||
|
echo "No file: '${POM}'." >&2
|
||||||
|
echo "Maybe run 'gradle -Pversion=0.0.1 build generatePomFileForMavenPublication'?" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
GROUP_ID=$(xmlstarlet sel -t -m '//_:project' -v '_:groupId' build/publications/maven/pom-default.xml)
|
||||||
|
ARTIFACT_ID=$(xmlstarlet sel -t -m '//_:project' -v '_:artifactId' build/publications/maven/pom-default.xml)
|
||||||
|
VERSION=$(xmlstarlet sel -t -m '//_:project' -v '_:version' build/publications/maven/pom-default.xml)
|
||||||
|
|
||||||
|
NAME="${GROUP_ID}:${ARTIFACT_ID}:${VERSION}"
|
||||||
|
|
||||||
|
echo "Deploy ${NAME}..."
|
||||||
|
|
||||||
|
# build the zip directory
|
||||||
|
ZIP_DIR="build/publications/maven/central-bundle"
|
||||||
|
rm -rf "${ZIP_DIR}"
|
||||||
|
SUB_DIR="${GROUP_ID//./\/}/${ARTIFACT_ID//.\//}/${VERSION}"
|
||||||
|
TARGET_DIR="${ZIP_DIR}/${SUB_DIR}"
|
||||||
|
mkdir -p "${TARGET_DIR}"
|
||||||
|
|
||||||
|
cp $POM "${TARGET_DIR}/${ARTIFACT_ID}-${VERSION}.pom"
|
||||||
|
cp "build/libs/${ARTIFACT_ID}-${VERSION}.jar" "${TARGET_DIR}"
|
||||||
|
cp "build/libs/${ARTIFACT_ID}-${VERSION}-javadoc.jar" "${TARGET_DIR}"
|
||||||
|
cp "build/libs/${ARTIFACT_ID}-${VERSION}-sources.jar" "${TARGET_DIR}"
|
||||||
|
|
||||||
|
# sign and digest
|
||||||
|
pushd $TARGET_DIR
|
||||||
|
for file in *.jar *.pom; do
|
||||||
|
gpg --default-key $GPG_KEY_ID --armor --detach-sign "${file}"
|
||||||
|
sha1sum "${file}" |awk '{print $1}' > "${file}.sha1"
|
||||||
|
md5sum "${file}" |awk '{print $1}' > "${file}.md5"
|
||||||
|
done
|
||||||
|
popd
|
||||||
|
|
||||||
|
# build the zip file
|
||||||
|
ZIP="build/publications/maven/central-bundle.zip"
|
||||||
|
rm -f "${ZIP}"
|
||||||
|
pushd $ZIP_DIR
|
||||||
|
zip -r ../$(basename ${ZIP}) .
|
||||||
|
popd
|
||||||
|
|
||||||
|
# deploy
|
||||||
|
AUTH_HEADER="Authorization: Bearer $(echo "${TOKEN_USERNAME}:${TOKEN_PASSWORD}"|base64)"
|
||||||
|
DEPLOYMENT_ID=$(curl --request POST \
|
||||||
|
--verbose \
|
||||||
|
--header "${AUTH_HEADER}" \
|
||||||
|
--form bundle=@${ZIP} \
|
||||||
|
"https://central.sonatype.com/api/v1/publisher/upload?publishingType=AUTOMATIC&name=${NAME}")
|
||||||
|
|
||||||
|
echo "Deployment ID: ${DEPLOYMENT_ID}"
|
||||||
Reference in New Issue
Block a user