| # Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. |
| # |
| # This program and the accompanying materials are made available under the |
| # terms of the Eclipse Distribution License v. 1.0, which is available at |
| # http://www.eclipse.org/org/documents/edl-v10.php. |
| # |
| # SPDX-License-Identifier: BSD-3-Clause |
| |
| # Maven plugins |
| VERSIONS_PLUGIN='org.codehaus.mojo:versions-maven-plugin:2.7' |
| HELP_PLUGIN='org.apache.maven.plugins:maven-help-plugin:3.2.0' |
| |
| # Compute version strings for next development cycle. |
| # Version strings are set as new shell variables with provided prefix. |
| # Arguments: |
| # $1 - Variable prefix |
| # $2 - Source version |
| # Variables set: |
| # "${1}_NEXT_VERSION" - Next version string: Source string with last component increased by 1 |
| # "${1}_NEXT_SNAPSHOT" - Next snapshot string: Next version string with '-SNAPSHOT' suffix |
| next_version() { |
| set -f |
| local NEXT_COMPONENTS=(${2//\./ }) |
| local LAST_INDEX=$((${#NEXT_COMPONENTS[@]} - 1)) |
| local NEXT_COMPONENTS[${LAST_INDEX}]=$((${NEXT_COMPONENTS[${LAST_INDEX}]} + 1)) |
| local COMPONENTS_STR="${NEXT_COMPONENTS[@]}" |
| local NEXT_VERSION="${COMPONENTS_STR// /.}" |
| local NEXT_SNAPSHOT="${NEXT_VERSION}-SNAPSHOT" |
| echo "${1} Next Version: ${NEXT_VERSION}" |
| echo "${1} Next Snapshot: ${NEXT_SNAPSHOT}" |
| eval "${1}_NEXT_VERSION"="${NEXT_VERSION}" |
| eval "${1}_NEXT_SNAPSHOT"="${NEXT_SNAPSHOT}" |
| } |
| |
| # Prepare release version string and next development cycle versions. |
| # Version strings are set as new shell variables with provided prefix. |
| # Arguments: |
| # $1 - Variable prefix |
| # $2 - Build directory |
| # Source variables: |
| # "${1}_VERSION" - Release version override (optional) |
| # Variables set: |
| # "${1}_RELEASE_VERSION" - Release version |
| read_version() { |
| local VERSION_VAR="${1}_VERSION" |
| local SNAPSHOT_VERSION=`(cd ${2} && mvn -B ${HELP_PLUGIN}:evaluate -Dexpression=project.version 2> /dev/null | grep -E '^[0-9]+(\.[0-9]+)+-SNAPSHOT$')` |
| if [ -z "${!VERSION_VAR}" ]; then |
| local RELEASE_VERSION="${SNAPSHOT_VERSION/-SNAPSHOT/}" |
| else |
| local RELEASE_VERSION="${!VERSION_VAR}" |
| fi |
| echo "${1} Release Version: ${RELEASE_VERSION}" |
| eval "${1}_RELEASE_VERSION"="${RELEASE_VERSION}" |
| next_version "${1}" "${RELEASE_VERSION}" |
| } |
| |
| # Read Maven identifier (groupId and artifactId). |
| # Maven identifier is set as new shell variables with provided prefix. |
| # Arguments: |
| # $1 - Variable prefix |
| # $2 - Build directory |
| # Variables set: |
| # "${1}_GROUP_ID" - Maven groupId |
| # "${1}_ARTIFACT_ID" - Maven artifactId |
| read_mvn_id() { |
| local GROUP_ID=`(cd ${2} && mvn -B ${HELP_PLUGIN}:evaluate -Dexpression=project.groupId | grep -Ev '(^\[)')` |
| local ARTIFACT_ID=`(cd ${2} && mvn -B ${HELP_PLUGIN}:evaluate -Dexpression=project.artifactId | grep -Ev '(^\[)')` |
| echo "${1} Group ID: ${GROUP_ID}" |
| echo "${1} Artifact ID: ${ARTIFACT_ID}" |
| eval "${1}_GROUP_ID"="${GROUP_ID}" |
| eval "${1}_ARTIFACT_ID"="${ARTIFACT_ID}" |
| } |
| |
| # Set Maven artifact version. |
| # Arguments: |
| # $1 - Artifact identifier (e.g. 'SPEC', 'API', 'RI') |
| # $2 - Build directory |
| # $3 - Version to set |
| # $4 - Group ID |
| # $5 - Artifact ID |
| # $6 - Additional Maven arguments |
| set_version() { |
| echo '--[ Set version ]---------------------------------------------------------------' |
| # Set release version |
| (cd ${2} && \ |
| mvn -U -C \ |
| ${6} \ |
| -DnewVersion="${3}" \ |
| -DgenerateBackupPoms=false \ |
| clean ${VERSIONS_PLUGIN}:set) |
| echo '--[ Commit modified pom.xml files ]---------------------------------------------' |
| local POM_FILES=`git status | grep -E 'modified:.*pom\.xml' | sed -e 's/[[:space:]][[:space:]]*modified:[[:space:]][[:space:]]*//'` |
| git add ${POM_FILES} && \ |
| git commit -m "Update ${1} version of ${4}:${5} to ${3}" |
| } |