name: 'Setup Maven Action' description: 'Complete environment configuration for Maven builds' branding: icon: 'settings' color: 'green' inputs: # checkout checkout-fetch-depth: description: 'Number of commits to fetch' required: false checkout-path: description: 'Relative path under $GITHUB_WORKSPACE to place the repository' required: false checkout-persist-credentials: description: 'Whether to configure the token or SSH key with the local git config' default: 'false' required: false checkout-ref: description: 'The branch, tag, or SHA of the repository to clone' required: false checkout-repository: description: 'The repository to checkout if not the repository that triggered the action. For use when building GitHub Apps' required: false default: ${{ github.repository }} checkout-token: description: 'Token to use for checkout if checking out a repository out of scope for GITHUB_TOKEN' required: false default: ${{ github.token }} # java jdk params java-version: description: 'The Java version to set up' default: '17' required: true java-distribution: description: 'Java distribution' default: 'zulu' required: false # cache cache-enabled: description: 'Enable cache' default: 'true' required: false cache-prefix: description: 'Cache key prefix' required: false cache-path: description: 'Cache path' default: '~/.m2/repository' required: false cache-path-add: description: 'Additional item for cache path' required: false # maven version maven-version: description: 'The Maven version to set up' default: '3.9.6' required: false # maven settings.xml settings-servers: description: 'servers definition in json array, e.g.: [{"id": "serverId", "username": "username", "password": "password"}]' required: false settings-mirrors: description: 'mirrors definition in json array, e.g.: [{"id": "id", "name": "name", "mirrorOf": "mirrorOf", "url": "url"}]' required: false settings-properties: description: 'json array with properties, e.g.: [{"propertyName1": "propertyValue1"}, {"propertyName2": "propertyValue2"}]' required: false settings-sonatypeSnapshots: description: 'add https://oss.sonatype.org/content/repositories/snapshots to repository list - true or false' required: false settings-proxies: description: 'proxies definition in json array, e.g.: [{"id": "http-proxy", "active": "true", "protocol": "http", "host": "host", "port": "port", "nonProxyHosts": "host1|host2"}]' required: false settings-repositories: description: 'repository settings definition in json array, e.g.: [ { "id": "repoId","name": "repoName","url": "url","snapshots": { "enabled": true } } ]' required: false runs: using: 'composite' steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: '${{ inputs.checkout-fetch-depth }}' path: '${{ inputs.checkout-path }}' persist-credentials: '${{ inputs.checkout-persist-credentials }}' ref: '${{ inputs.checkout-ref }}' repository: '${{ inputs.checkout-repository }}' token: '${{ inputs.checkout-token }}' - uses: actions/setup-java@v4 with: overwrite-settings: false java-version: '${{ inputs.java-version }}' distribution: '${{ inputs.java-distribution }}' - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 if: inputs.cache-enabled == 'true' with: path: | ${{ inputs.cache-path }} ${{ inputs.cache-path-add }} key: ${{ inputs.cache-prefix }}${{ runner.os }}-jdk${{ inputs.java-version }}-${{ inputs.java-distribution }}-maven${{ inputs.maven-version }}-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ inputs.cache-prefix }}${{ runner.os }}-jdk${{ inputs.java-version }}-${{ inputs.java-distribution }}-maven${{ inputs.maven-version }}- - name: Installed Maven version run: echo "version=$(mvn -q -v)" >> $GITHUB_OUTPUT shell: bash id: current-maven - uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5 if: inputs.maven-version != steps.current-maven.outputs.version with: maven-version: '${{ inputs.maven-version }}' - uses: s4u/maven-settings-action@7802f6aec16c9098b4798ad1f1d8ac75198194bd # v3.0.0 with: servers: '${{ inputs.settings-servers }}' mirrors: '${{ inputs.settings-mirrors }}' properties: '${{ inputs.settings-properties }}' sonatypeSnapshots: '${{ inputs.settings-sonatypeSnapshots }}' proxies: '${{ inputs.settings-proxies }}' repositories: '${{ inputs.settings-repositories }}'