|
1 | 1 | #!/bin/bash |
2 | | -# Install Maven 3.9.13 and Gradle 9.3.1 for SAM CLI integration tests. |
3 | | -# Supports both Linux and Windows (Git Bash on GitHub Actions). |
| 2 | +# Install latest stable Maven and Gradle for SAM CLI integration tests. |
4 | 3 | set -euo pipefail |
5 | 4 |
|
6 | | -MAVEN_VERSION="3.9.13" |
7 | | -GRADLE_VERSION="9.3.1" |
8 | | - |
9 | | -# Check if correct versions are already installed |
10 | | -MAVEN_INSTALLED=$(mvn --version 2>/dev/null | head -1 | grep -o "${MAVEN_VERSION}" || true) |
11 | | -GRADLE_INSTALLED=$(gradle --version 2>/dev/null | grep "Gradle ${GRADLE_VERSION}" || true) |
12 | | - |
13 | | -if [[ -n "$MAVEN_INSTALLED" && -n "$GRADLE_INSTALLED" ]]; then |
14 | | - echo "Maven ${MAVEN_VERSION} and Gradle ${GRADLE_VERSION} are already installed, skipping." |
15 | | - mvn --version |
16 | | - gradle --version |
17 | | - exit 0 |
18 | | -fi |
| 5 | +echo "=== Before install ===" |
| 6 | +mvn --version 2>&1 || echo "Maven: not installed" |
| 7 | +gradle --version 2>&1 || echo "Gradle: not installed" |
19 | 8 |
|
20 | 9 | if [[ "${RUNNER_OS:-}" == "Windows" ]]; then |
21 | | - echo "=== Installing Maven ${MAVEN_VERSION} and Gradle ${GRADLE_VERSION} on Windows via choco ===" |
22 | | - [[ -z "$MAVEN_INSTALLED" ]] && choco install maven --version="${MAVEN_VERSION}" -y --allow-downgrade |
23 | | - [[ -z "$GRADLE_INSTALLED" ]] && choco install gradle --version="${GRADLE_VERSION}" -y --allow-downgrade |
24 | | - |
25 | | - # Chocolatey updates the system PATH in the registry but the current bash session |
26 | | - # doesn't see it. Explicitly add the known install paths so mvn/gradle are available |
27 | | - # in this session and in subsequent workflow steps. |
28 | | - CHOCO_MAVEN_BIN="C:/ProgramData/chocolatey/lib/maven/apache-maven-${MAVEN_VERSION}/bin" |
29 | | - CHOCO_GRADLE_BIN="C:/ProgramData/chocolatey/lib/gradle/gradle-${GRADLE_VERSION}/bin" |
30 | | - export PATH="${CHOCO_MAVEN_BIN}:${CHOCO_GRADLE_BIN}:${PATH}" |
31 | | - echo "${CHOCO_MAVEN_BIN}" >> "$GITHUB_PATH" |
32 | | - echo "${CHOCO_GRADLE_BIN}" >> "$GITHUB_PATH" |
| 10 | + choco install maven gradle -y |
| 11 | + # Refresh PATH for current session |
| 12 | + eval "$(powershell.exe -Command '[Environment]::GetEnvironmentVariable("Path","Machine")' | tr ';' '\n' | sed 's|\\|/|g' | while read -r p; do echo "export PATH=\"$p:\$PATH\""; done)" |
33 | 13 | else |
34 | | - echo "=== Installing Maven ${MAVEN_VERSION} and Gradle ${GRADLE_VERSION} on Linux ===" |
35 | | - sudo apt-get remove -y maven || true |
36 | | - |
37 | | - wget -q "https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.zip" -P /tmp |
38 | | - sudo unzip -o -q /tmp/apache-maven-*.zip -d /opt/mvn |
39 | | - |
40 | | - wget -q "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" -P /tmp |
41 | | - sudo unzip -o -q /tmp/gradle-*.zip -d /opt/gradle |
42 | | - |
43 | | - sudo ln -sf "/opt/mvn/apache-maven-${MAVEN_VERSION}/bin/mvn" /usr/local/bin/mvn |
44 | | - sudo ln -sf "/opt/gradle/gradle-${GRADLE_VERSION}/bin/gradle" /usr/local/bin/gradle |
45 | | - |
46 | | - echo "/opt/mvn/apache-maven-${MAVEN_VERSION}/bin" >> "$GITHUB_PATH" |
47 | | - echo "/opt/gradle/gradle-${GRADLE_VERSION}/bin" >> "$GITHUB_PATH" |
48 | | - echo "MAVEN_HOME=/opt/mvn/apache-maven-${MAVEN_VERSION}" >> "$GITHUB_ENV" |
49 | | - |
50 | | - export PATH="/opt/mvn/apache-maven-${MAVEN_VERSION}/bin:/opt/gradle/gradle-${GRADLE_VERSION}/bin:$PATH" |
| 14 | + sudo apt-get update -qq |
| 15 | + sudo apt-get install -y -qq maven gradle |
51 | 16 | fi |
52 | 17 |
|
53 | | -mvn --version || echo "WARNING: mvn --version failed" |
54 | | -gradle --version || echo "WARNING: gradle --version failed" |
55 | | -echo "=== Maven and Gradle installation complete ===" |
| 18 | +echo "=== After install ===" |
| 19 | +mvn --version 2>&1 || echo "Maven: not installed" |
| 20 | +gradle --version 2>&1 || echo "Gradle: not installed" |
0 commit comments