maven.yml 1.38 KB
# 打包校验:JDK 版本取自根 pom.xml 的 java.version,与当前分支保持一致
# 参考:https://docs.github.com/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-maven

name: Java CI with Maven

on:
  push:
    branches: [ master, master-jdk17, master-jdk25 ]
  # pull_request:
  #   branches: [ master ]
  workflow_dispatch:

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v7
    # 读取根 pom.xml 的 properties/java.version(1.8 -> 8),缺失或无效时直接失败
    - name: Resolve JDK version
      id: jdk
      run: |
        python3 -I - <<'EOF' >> "$GITHUB_OUTPUT"
        import xml.etree.ElementTree as ET
        ns = {'m': 'http://maven.apache.org/POM/4.0.0'}
        v = (ET.parse('pom.xml').getroot().findtext('m:properties/m:java.version', namespaces=ns) or '').strip().removeprefix('1.')
        if not v.isdigit():
            raise SystemExit(f'根 pom.xml 的 properties/java.version 缺失或无效: {v!r}')
        print(f'version={v}')
        EOF
    - name: Set up JDK ${{ steps.jdk.outputs.version }}
      uses: actions/setup-java@v6
      with:
        java-version: ${{ steps.jdk.outputs.version }}
        distribution: 'temurin'
        cache: maven
        cache-dependency-path: '**/pom.xml'
    - name: Build with Maven
      run: mvn -B package --file pom.xml -Dmaven.test.skip=true