Here is the scripts to deploy the artifacts and also the
          nexus staging job.    
        
        #!/bin/bash -ex
          
          TOOLS_PREFIX='/opt/tools'
          JAVA_PREFIX="${TOOLS_PREFIX}/java/oracle"
          MVN_HOME="${TOOLS_PREFIX}/apache-maven/latest"
          JAVA_HOME="${JAVA_PREFIX}/jdk-8/latest"
PATH="${MVN_HOME}/bin:${JAVA_HOME}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
          
          # Maven plugins
          VERSIONS_PLUGIN='org.codehaus.mojo:versions-maven-plugin:2.7'
          HELP_PLUGIN='org.apache.maven.plugins:maven-help-plugin:3.1.0'
          
          # Check whether top level pom.xml contains SNAPSHOT version
          if ! grep '<version>' pom.xml | grep 'SNAPSHOT' ; then
            echo '-[ Missing SNAPSHOT version in POM!
          ]-------------------------------------------'
            exit 1
          fi
          
          # Compute release versions
          SNAPSHOT_VERSION=`mvn -B ${HELP_PLUGIN}:evaluate
          -Dexpression=project.version 2> /dev/null | grep -E
          '^[0-9]+(\.[0-9]+)+-SNAPSHOT$'`
          
          if [ -z "${RELEASE_VERSION}" ]; then
            if [ -z ${SNAPSHOT_VERSION} ]; then
              echo '-[ Missing required snapshot version number!
          ]----------------------------------'
            fi
            RELEASE_VERSION=`echo ${SNAPSHOT_VERSION} | sed -e
          's/-SNAPSHOT//'`
          fi
          
          # Bash specific code
          if [ -z "${NEXT_VERSION}" ]; then
            NEXT_VERSION=`echo ${RELEASE_VERSION} | sed -e
          's/\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`
            set -f
            NEXT_COMPONENTS=(${RELEASE_VERSION//\./ })
            LAST_INDEX=$((${#NEXT_COMPONENTS[@]} - 1))
           
          NEXT_COMPONENTS[${LAST_INDEX}]=$((${NEXT_COMPONENTS[${LAST_INDEX}]}
          + 1))
            NEXT_VERSION=`echo ${NEXT_COMPONENTS[@]} | tr ' '
          '.'`'-SNAPSHOT'
          fi
          
          RELEASE_TAG="${RELEASE_VERSION}"
          RELEASE_BRANCH="${RELEASE_VERSION}"-BRANCH
          
          echo "Current version: ${SNAPSHOT_VERSION}"
          echo "Release version: ${RELEASE_VERSION}"
          echo "Next version:    ${NEXT_VERSION}"
          echo "Release tag:     ${RELEASE_TAG}"
          
          if [ -z "${SNAPSHOT_VERSION}" -o -z "${RELEASE_VERSION}" -o -z
          "${NEXT_VERSION}" ]; then
            echo '-[ Missing required version numbers!
          ]------------------------------------------'
            exit 1
          fi
          
          if [ ${DRY_RUN} = 'true' ]; then
            echo '-[ Dry run turned on
          ]----------------------------------------------------------'
            MVN_DEPLOY_ARGS=''
            echo '-[ Skipping GitHub branch and tag checks
          ]--------------------------------------'
          else
            MVN_DEPLOY_ARGS='deploy:deploy'
            GIT_ORIGIN=`git remote`
            echo '-[ Prepare branch
          ]-------------------------------------------------------------'
            if [[ -n `git branch -r | grep
          "${GIT_ORIGIN}/${RELEASE_BRANCH}"` ]]; then
              if [ "${OVERWRITE}" = 'true' ]; then
                echo "${GIT_ORIGIN}/${RELEASE_BRANCH} branch already
          exists, deleting"
                git push --delete origin "${RELEASE_BRANCH}" &&
          true
              else
                echo "Error: ${GIT_ORIGIN}/${RELEASE_BRANCH} branch
          already exists"
                exit 1
              fi
            fi
            echo '-[ Release tag cleanup
          ]--------------------------------------------------------'
            if [[ -n `git ls-remote --tags ${GIT_ORIGIN} | grep
          "${RELEASE_TAG}"` ]]; then
              if [ "${OVERWRITE}" = 'true' ]; then
                echo "${RELEASE_TAG} tag already exists, deleting"
                git push --delete origin "${RELEASE_TAG}" &&
          true
              else
                echo "Error: ${RELEASE_TAG} tag already exists"
                exit 1
              fi
            fi
          fi
          
          # Always delete local branch if exists
          git branch --delete "${RELEASE_BRANCH}" && true
          git checkout -b ${RELEASE_BRANCH}
          # Always delete local tag if exists
          git tag --delete "${RELEASE_TAG}" && true
          
          # Setup jakartaee-stable-bot account information
          git config --global user.email "
jakartaee-stable-bot@xxxxxxxxxxx"
          git config --global 
user.name "Eclipse
          jakartaee-stable Bot"
          # Workaround: GPG initialization
          gpg --batch --import ${KEYRING}
          for fpr in $(gpg --list-keys --with-colons  | awk -F: '/fpr:/
          {print $10}' | sort -u);
          do
            echo -e "5\ny\n" |  gpg --batch --command-fd 0 --expert
          --edit-key $fpr trust;
          done
          
          # Project identifiers
          ARTIFACT_ID=$(mvn -B ${HELP_PLUGIN}:evaluate
          -Dexpression=project.artifactId | grep -Ev '(^\[)')
          GROUP_ID=$(mvn -B ${HELP_PLUGIN}:evaluate
          -Dexpression=project.groupId | grep -Ev '(^\[)')
          
          echo '-[ Set release version
          ]--------------------------------------------------------'
          # Set release version
          mvn -U -C -B \
              -DnewVersion="${RELEASE_VERSION}" \
              -DgenerateBackupPoms=false \
              clean ${VERSIONS_PLUGIN}:set
          
          echo '-[ Commit modified pom.xml files
          ]----------------------------------------------'
          POM_FILES=`git status | grep -E 'modified:.*pom\.xml' | sed -e
          's/[[:space:]][[:space:]]*modified:[[:space:]][[:space:]]*//'`
          git add ${POM_FILES} && \
          git commit -m "Prepare release
          ${GROUP_ID}:${ARTIFACT_ID}:${RELEASE_VERSION}"
          
          ##### Temporary workaround begin
#NEXUS_PLUGIN='org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7'
          #NEXUS_PLUGIN_PARAMS='-DnexusUrl=
https://oss.sonatype.org/
          -DserverId=ossrh'
          #STAGING_PROFILE_ID='7edbe315063867'
          #STAGING_DESC="jakartaxmlrpc-${BUILD_ID}"
          ## Open a new staging repo
          #mvn -B ${NEXUS_PLUGIN_PARAMS} ${NEXUS_PLUGIN}:rc-open \
          #    -DstagingProfileId="${STAGING_PROFILE_ID}" \
          #    -DstagingDescription="${STAGING_DESC}"
          ## Get the ID of the newly created staging repo
          #STAGING_REPO_ID=$(mvn -B ${NEXUS_PLUGIN_PARAMS}
          ${NEXUS_PLUGIN}:rc-list | \
          #    egrep "^\[INFO\] .*\-[0-9]+[ ]+OPEN[ ]+.*${STAGING_DESC}"
          | \
          #    awk '{print $2}' | head -1)
          #echo "STAGING_REPO_ID=${STAGING_REPO_ID}"
          ##### Temporary workaround end
          
          echo '-[ Deploy artifacts to staging repository
          ]-------------------------------------'
          #    -DstagingRepositoryId="${STAGING_REPO_ID}" \
          mvn -U -C -B \
              -DskipTests -DadditionalJOption=-Xdoclint:none
          -Poss-release -Pstaging \
              clean package source:jar javadoc:jar gpg:sign
          install:install ${MVN_DEPLOY_ARGS}
          
          echo '-[ Tag release
          ]----------------------------------------------------------------'
          git tag "${RELEASE_TAG}" -m "Release
          ${GROUP_ID}:${ARTIFACT_ID}:${RELEASE_VERSION}"
          
          echo '-[ Set next snapshot version
          ]--------------------------------------------------'
          mvn -U -C -B \
              -DnewVersion="${NEXT_VERSION}" \
              -DgenerateBackupPoms=false \
              clean ${VERSIONS_PLUGIN}:set
          
          echo '-[ Commit modified pom.xml files
          ]----------------------------------------------'
          POM_FILES=`git status | grep -E 'modified:.*pom\.xml' | sed -e
          's/[[:space:]][[:space:]]*modified:[[:space:]][[:space:]]*//'`
          git add ${POM_FILES} && \
          git commit -m "Prepare next development cycle for
          ${NEXT_VERSION}"
          
          if [ ${DRY_RUN} = 'true' ]; then
            echo '-[ Skipping GitHub update
          ]-----------------------------------------------------'
          else
            echo '-[ Push branch and tag to GitHub
          ]----------------------------------------------'
            git push origin "${RELEASE_BRANCH}"
            git push origin "${RELEASE_TAG}"
          fi
          
        
#!/bin/bash -ex
          
          TOOLS_PREFIX='/opt/tools'
          JAVA_PREFIX="${TOOLS_PREFIX}/java/oracle"
          MVN_HOME="${TOOLS_PREFIX}/apache-maven/latest"
          JAVA_HOME="${JAVA_PREFIX}/jdk-8/latest"
PATH="${MVN_HOME}/bin:${JAVA_HOME}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
          
          # Maven plugins
          HELP_PLUGIN='org.apache.maven.plugins:maven-help-plugin:3.1.0'
NEXUS_PLUGIN='org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7'
          NEXUS_PLUGIN_PARAMS='-DnexusUrl=
https://oss.sonatype.org/
          -DserverId=ossrh'
          
          case "${PROJECT}" in
          
            'Enterprise-Deployment')
             
          GIT_REPO='
git@xxxxxxxxxx:eclipse-ee4j/enterprise-deployment.git'
              STAGING_NAME='jakartaenterprisedeploy'
            ;;
          
            'JAX-RPC-API')
              GIT_REPO='
git@xxxxxxxxxx:eclipse-ee4j/jax-rpc-api.git'
              STAGING_NAME='jakartaxmlrpc'
            ;;
          
            'JAXR-API')
              GIT_REPO='
git@xxxxxxxxxx:eclipse-ee4j/jaxr-api.git'
              STAGING_NAME='jakartaxmlregistry'
            ;;
          
            'Management-API')
              GIT_REPO='
git@xxxxxxxxxx:eclipse-ee4j/management-api.git'
              STAGING_NAME='jakartamanagementj2ee'
            ;;
          
            *)
              if [ "${ACTION}" != 'list' ]; then
                echo '-[ Error
          ]----------------------------------------------------------------------'
                echo 'No project selected, exitting.'
                exit 1
              else
                GIT_REPO=''
              fi
            ;;
          
          esac
          
          if [ -n "${GIT_REPO}" ]; then
            echo '-[ Cloning Project Repository
          ]-------------------------------------------------'
            git clone ${GIT_REPO} . && git checkout ${BRANCH}
            echo '-[ Reading project identifiers
          ]------------------------------------------------'
            if [ -n "${BUILD_DIR}" ]; then
              cd ${BUILD_DIR}
            fi
            # Project identifiers
            ARTIFACT_ID=$(mvn -B ${HELP_PLUGIN}:evaluate
          -Dexpression=project.artifactId | grep -Ev '(^\[)')
            GROUP_ID=$(mvn -B ${HELP_PLUGIN}:evaluate
          -Dexpression=project.groupId | grep -Ev '(^\[)')
          fi
          
          
          echo "Project:              ${PROJECT} API"
          echo "Action:               ${ACTION}"
          echo "Repository ID prefix: ${STAGING_NAME}"
          echo "Artifact:             ${GROUP_ID}:${ARTIFACT_ID}"
          
          
          case "${ACTION}" in
          
            'list')
          
              echo '-[ Profiles List
          ]--------------------------------------------------------------'
              mvn -B ${NEXUS_PLUGIN_PARAMS}
          ${NEXUS_PLUGIN}:rc-list-profiles
              echo '-[ Staging Repository List
          ]----------------------------------------------------'
              if [ -n "${STAGING_NAME}" ]; then
                mvn -B ${NEXUS_PLUGIN_PARAMS} ${NEXUS_PLUGIN}:rc-list |
          egrep "^\[INFO\] ${STAGING_NAME}\-[0-9]+[ ]+[A-Z]+[ ]" || true
              else
                mvn -B ${NEXUS_PLUGIN_PARAMS} ${NEXUS_PLUGIN}:rc-list
              fi
              ;;
          
            'close')
          
              if [ -z "${VERSION}" ]; then
                echo '-[ Missing version number
          ]-----------------------------------------------------'
                exit 1
              fi
              STAGING_DESC="${GROUP_ID}:${ARTIFACT_ID}:${VERSION}"
              echo "Project description:  ${STAGING_DESC}"
              echo '-[ Searching for open deployment
          ]----------------------------------------------'
          
              # Get the ID of the opem staging repository
          #    if [ "${PROJECT}" = 'JAX-RPC-API' ]; then
          #      STAGING_REPO_ID=$(mvn -B ${NEXUS_PLUGIN_PARAMS}
          ${NEXUS_PLUGIN}:rc-list | \
          #        egrep "^\[INFO\] .*\-[0-9]+[ ]+OPEN[
          ]+.*${STAGING_NAME}" | \
          #        awk '{print $2}' | head -1)
          #    else
                STAGING_REPO_ID=$(mvn -B ${NEXUS_PLUGIN_PARAMS}
          ${NEXUS_PLUGIN}:rc-list | \
                  egrep "^\[INFO\] ${STAGING_NAME}\-[0-9]+[ ]+OPEN[ ]" |
          \
                  awk '{print $2}' | head -1)
          #    fi
              echo "Nexus staging repository ID: ${STAGING_REPO_ID}"
          
              if [ -n "${STAGING_REPO_ID}" ]; then
                echo '-[ Closing Nexus staging repository
          ]-------------------------------------------'
                mvn -B ${NEXUS_PLUGIN_PARAMS} ${NEXUS_PLUGIN}:rc-close \
                    -DstagingRepositoryId="${STAGING_REPO_ID}" \
                    -DstagingDescription="${STAGING_DESC}"
              else
                echo '-[ Delpoyment '${STAGING_NAME}' was not found
          ]------------------------------------'
              fi
              ;;
          
            'drop')
          
              if [ -z "${VERSION}" ]; then
                echo '-[ Searching for deployments
          ]----------------------------------------------'
                for REPO_ID in $(mvn -B ${NEXUS_PLUGIN_PARAMS}
          ${NEXUS_PLUGIN}:rc-list | \
                  egrep "^\[INFO\] ${STAGING_NAME}\-[0-9]+[ ]+[A-Z]+[ ]"
          | \
                  awk '{print $2}' | head -1); do
                  echo '-[ Dropping Nexus staging repository
          ]------------------------------------------'
                  echo "Deployment: ${REPO_ID}"
                  mvn -B ${NEXUS_PLUGIN_PARAMS} ${NEXUS_PLUGIN}:rc-drop
          \
                      -DstagingRepositoryId="${REPO_ID}"
                done
              else
                mvn -B ${NEXUS_PLUGIN_PARAMS} ${NEXUS_PLUGIN}:rc-drop \
                    -DstagingRepositoryId="${VERSION}"
              fi
              ;;
          
            release)
              echo '-[ Action denied for security reasons
          ]-------------------------------------'
              ;;
          
          esac