diff --git a/.github/workflows/early-access.yaml b/.github/workflows/early-access.yaml
new file mode 100644
index 00000000..8f3039f3
--- /dev/null
+++ b/.github/workflows/early-access.yaml
@@ -0,0 +1,116 @@
+#
+# Copyright (c) 2017 Angelo Zerr and other contributors as
+# indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Early Access
+
+# trigger on push to branches and PR
+on:
+ push:
+ branch:
+ pull_request:
+
+env:
+ GRAALVM_VERSION: '21.3.0'
+ JAVA_VERSION: '17'
+
+jobs:
+ build:
+ name: 'Build with Graal on ${{ matrix.os }}'
+ if: startsWith(github.event.head_commit.message, 'Updated CHANGELOG.md') != true && startsWith(github.event.head_commit.message, '[maven-release-plugin]') != true
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ ubuntu-18.04, macOS-10.15, windows-2019 ]
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: 'Checkout'
+ uses: actions/checkout@v2
+
+ - name: 'Set vars'
+ shell: bash
+ run: |
+ OS=$(echo '${{ runner.os }}' | awk '{print tolower($0)}')
+ [[ $OS == 'ubuntu' ]] && echo "OS=linux" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ [[ $OS == 'macos' ]] && echo "OS=darwin" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
+
+ - name: 'Set up Graal'
+ uses: graalvm/setup-graalvm@v1
+ with:
+ version: ${{ env.GRAALVM_VERSION }}
+ java-version: ${{ env.JAVA_VERSION }}
+ components: 'native-image'
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: 'Build native distribution'
+ run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e
+
+ - name: 'Upload daemon test logs'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: daemon-test-logs-${{ env.OS }}
+ path: integration-tests/target/mvnd-tests/**/daemon*.log
+
+ - name: 'Upload artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: artifacts
+ path: dist/target/mvnd-*.zip
+
+ early-access:
+ runs-on: ubuntu-18.04
+ needs: [build]
+ # Only post early access releases when push to master
+ if: ${{ !github.event.issue.pull_request }} && startsWith(github.ref, 'refs/heads/master')
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: 'Download all build artifacts'
+ uses: actions/download-artifact@v2
+
+ - name: 'Set up Java'
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ env.JAVA_VERSION }}
+ distribution: 'zulu'
+
+ - name: 'Cache Maven packages'
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
+ - name: 'Release to GitHub'
+ env:
+ JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: ./mvnw -B --file pom.xml -pl :mvnd -DartifactsDir=artifacts jreleaser:release
+
+ - name: 'JReleaser output'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: jreleaser-logs
+ path: |
+ target/jreleaser/trace.log
+ target/jreleaser/output.properties
diff --git a/.github/workflows/release-candidate-stage1.yml b/.github/workflows/release-candidate-stage1.yml
new file mode 100644
index 00000000..e7fec3ff
--- /dev/null
+++ b/.github/workflows/release-candidate-stage1.yml
@@ -0,0 +1,95 @@
+#
+# Copyright (c) 2017 Angelo Zerr and other contributors as
+# indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Release Candidate - Stage1
+
+# manual trigger
+on:
+ workflow_dispatch:
+
+env:
+ GRAALVM_VERSION: '21.3.0'
+ JAVA_VERSION: '17'
+
+jobs:
+ build:
+ name: 'Build with Graal on ${{ matrix.os }}'
+ strategy:
+ fail-fast: true
+ matrix:
+ os: [ ubuntu-18.04, macOS-10.15, windows-2019 ]
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: 'Checkout'
+ uses: actions/checkout@v2
+
+ - name: 'Set vars'
+ shell: bash
+ run: |
+ OS=$(echo '${{ runner.os }}' | awk '{print tolower($0)}')
+ [[ $OS == 'ubuntu' ]] && echo "OS=linux" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ [[ $OS == 'macos' ]] && echo "OS=darwin" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
+
+ - name: 'Set up Graal'
+ uses: graalvm/setup-graalvm@v1
+ with:
+ version: ${{ env.GRAALVM_VERSION }}
+ java-version: ${{ env.JAVA_VERSION }}
+ components: 'native-image'
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: 'Build native distribution'
+ run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e
+
+ - name: 'Upload daemon test logs'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: daemon-test-logs-${{ env.OS }}
+ path: integration-tests/target/mvnd-tests/**/daemon*.log
+
+ release:
+ runs-on: ubuntu-18.04
+ needs: [build]
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+ with:
+ # required for triggering release-candidate-stage2
+ token: ${{ secrets.GIT_ACCESS_TOKEN }}
+
+ - name: 'Set up Java'
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ env.JAVA_VERSION }}
+ distribution: 'zulu'
+
+ - name: 'Cache Maven packages'
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
+ - name: 'Release'
+ run: |
+ ./mvnw -B -ntp \
+ -Drepository.url=https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git \
+ release:prepare
diff --git a/.github/workflows/release-candidate-stage2.yml b/.github/workflows/release-candidate-stage2.yml
new file mode 100644
index 00000000..cbd57e1e
--- /dev/null
+++ b/.github/workflows/release-candidate-stage2.yml
@@ -0,0 +1,65 @@
+#
+# Copyright (c) 2017 Angelo Zerr and other contributors as
+# indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Release Candidate - Stage2
+
+# push on tag but not on 'early-access'
+on:
+ push:
+ tags:
+ - '!early-access'
+
+env:
+ GRAALVM_VERSION: '21.3.0'
+ JAVA_VERSION: '17'
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: 'Set up Java'
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ env.JAVA_VERSION }}
+ distribution: 'zulu'
+
+ - name: 'Cache Maven packages'
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
+ - name: 'Release to GitHub'
+ env:
+ JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: ./mvnw -B --file pom.xml -pl :mvnd -Pprerelease jreleaser:release
+
+ - name: 'JReleaser output'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: jreleaser-logs
+ path: |
+ target/jreleaser/trace.log
+ target/jreleaser/output.properties
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
new file mode 100644
index 00000000..a4b3ef79
--- /dev/null
+++ b/.github/workflows/release.yaml
@@ -0,0 +1,114 @@
+#
+# Copyright (c) 2017 Angelo Zerr and other contributors as
+# indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Release
+
+# manual trigger
+on:
+ workflow_dispatch:
+
+env:
+ GRAALVM_VERSION: '21.3.0'
+ JAVA_VERSION: '17'
+
+jobs:
+ build:
+ name: 'Build with Graal on ${{ matrix.os }}'
+ strategy:
+ fail-fast: true
+ matrix:
+ os: [ ubuntu-18.04, macOS-10.15, windows-2019 ]
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+
+ - name: 'Set vars'
+ shell: bash
+ run: |
+ OS=$(echo '${{ runner.os }}' | awk '{print tolower($0)}')
+ [[ $OS == 'ubuntu' ]] && echo "OS=linux" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ [[ $OS == 'macos' ]] && echo "OS=darwin" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
+
+ - name: 'Set up Graal'
+ uses: graalvm/setup-graalvm@v1
+ with:
+ version: ${{ env.GRAALVM_VERSION }}
+ java-version: ${{ env.JAVA_VERSION }}
+ components: 'native-image'
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: 'Build native distribution'
+ run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e
+
+ - name: 'Upload daemon test logs'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: daemon-test-logs-${{ env.OS }}
+ path: integration-tests/target/mvnd-tests/**/daemon*.log
+
+ - name: 'Upload artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: artifacts
+ path: dist/target/mvnd-*.zip
+
+ release:
+ runs-on: ubuntu-18.04
+ needs: [build]
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: 'Download all build artifacts'
+ uses: actions/download-artifact@v2
+
+ - name: 'Set up Java'
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ env.JAVA_VERSION }}
+ distribution: 'zulu'
+
+ - name: 'Cache Maven packages'
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
+ - name: 'Release to GitHub'
+ env:
+ JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ JRELEASER_HOMEBREW_GITHUB_TOKEN: ${{ secrets.GIT_ACCESS_TOKEN }}
+ JRELEASER_SDKMAN_CONSUMER_KEY: ${{ secrets.SDKMAN_CONSUMER_KEY }}
+ JRELEASER_SDKMAN_CONSUMER_TOKEN: ${{ secrets.SDKMAN_CONSUMER_TOKEN }}
+ run: ./mvnw -B --file pom.xml -pl :mvnd -Prelease -DartifactsDir=artifacts jreleaser:full-release
+
+ - name: 'JReleaser output'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: jreleaser-logs
+ path: |
+ target/jreleaser/trace.log
+ target/jreleaser/output.properties
diff --git a/.github/workflows/test-jdk11.yaml b/.github/workflows/test-jdk11.yaml
deleted file mode 100644
index 83570bb0..00000000
--- a/.github/workflows/test-jdk11.yaml
+++ /dev/null
@@ -1,144 +0,0 @@
-#
-# Copyright (c) 2017 Angelo Zerr and other contributors as
-# indicated by the @author tags.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-name: GitHub Actions
-on: [push, pull_request]
-
-env:
- GRAALVM_VERSION: '21.3.0.java11'
-
-jobs:
-
- linux-jdk11:
- runs-on: ubuntu-18.04
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e $SKIP_TESTS_OPT
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-linux
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-linux-amd64.zip
- path: dist/target/mvnd-*.zip
-
- windows-jdk11:
- runs-on: windows-2019
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- shell: bash
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- shell: cmd
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- shell: cmd
- run: |
- call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
- ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e %SKIP_TESTS_OPT%
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-windows
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-windows-amd64.zip
- path: dist/target/mvnd-*.zip
-
- darwin-jdk11:
- runs-on: macos-10.15
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e $SKIP_TESTS_OPT
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-darwin
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-darwin-amd64.zip
- path: dist/target/mvnd-*.zip
-
diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml
deleted file mode 100644
index 58de2fcc..00000000
--- a/.github/workflows/verify.yaml
+++ /dev/null
@@ -1,261 +0,0 @@
-#
-# Copyright (c) 2017 Angelo Zerr and other contributors as
-# indicated by the @author tags.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-name: GitHub Actions
-on: [push, pull_request]
-
-env:
- GRAALVM_VERSION: '21.3.0.java17'
-
-jobs:
-
- linux:
- runs-on: ubuntu-18.04
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e $SKIP_TESTS_OPT
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-linux
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-linux-amd64.zip
- path: dist/target/mvnd-*.zip
-
- windows:
- runs-on: windows-2019
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- shell: bash
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- shell: cmd
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- shell: cmd
- run: |
- call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
- ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e %SKIP_TESTS_OPT%
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-windows
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-windows-amd64.zip
- path: dist/target/mvnd-*.zip
-
- darwin:
- runs-on: macos-10.15
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e $SKIP_TESTS_OPT
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-darwin
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-darwin-amd64.zip
- path: dist/target/mvnd-*.zip
-
- deploy:
- runs-on: ubuntu-18.04
- needs: [linux, windows, darwin]
- if: startsWith(github.ref, 'refs/tags') # deploy only for tags
- steps:
-
- - name: Download artifacts
- uses: actions/download-artifact@v2
-
- - name: ls -R
- run: ls -R
-
- - name: Set environment
- run: |
- if [[ ${GITHUB_REF} = refs/heads/* ]]
- then
- VERSION=${GITHUB_REF##*/}-${GITHUB_SHA::8}
- else
- VERSION=${GITHUB_REF##*/}
- fi
- echo "Using VERSION=$VERSION"
- echo "VERSION=$VERSION" >> $GITHUB_ENV
-
- - name: Compute sha256 checksums
- run: |
- sha256sum mvnd-linux-amd64.zip/mvnd-${{ env.VERSION }}-linux-amd64.zip | cut -d ' ' -f 1 > mvnd-linux-amd64.zip/mvnd-${{ env.VERSION }}-linux-amd64.zip.sha256
- sha256sum mvnd-darwin-amd64.zip/mvnd-${{ env.VERSION }}-darwin-amd64.zip | cut -d ' ' -f 1 > mvnd-darwin-amd64.zip/mvnd-${{ env.VERSION }}-darwin-amd64.zip.sha256
- sha256sum mvnd-windows-amd64.zip/mvnd-${{ env.VERSION }}-windows-amd64.zip | cut -d ' ' -f 1 > mvnd-windows-amd64.zip/mvnd-${{ env.VERSION }}-windows-amd64.zip.sha256
-
- - name: Create Release
- id: create_release
- uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: ${{ env.VERSION }}
- release_name: ${{ env.VERSION }}
- draft: false
- prerelease: false
-
- - name: Deploy mvnd-linux-amd64.zip
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-linux-amd64.zip/mvnd-${{ env.VERSION }}-linux-amd64.zip
- asset_name: mvnd-${{ env.VERSION }}-linux-amd64.zip
- asset_content_type: application/zip
-
- - name: Deploy mvnd-linux-amd64.zip.sha256
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-linux-amd64.zip/mvnd-${{ env.VERSION }}-linux-amd64.zip.sha256
- asset_name: mvnd-${{ env.VERSION }}-linux-amd64.zip.sha256
- asset_content_type: text/plain
-
- - name: Deploy mvnd-darwin-amd64.zip
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-darwin-amd64.zip/mvnd-${{ env.VERSION }}-darwin-amd64.zip
- asset_name: mvnd-${{ env.VERSION }}-darwin-amd64.zip
- asset_content_type: application/zip
-
- - name: Deploy mvnd-darwin-amd64.zip.sha256
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-darwin-amd64.zip/mvnd-${{ env.VERSION }}-darwin-amd64.zip.sha256
- asset_name: mvnd-${{ env.VERSION }}-darwin-amd64.zip.sha256
- asset_content_type: text/plain
-
- - name: Deploy mvnd-windows-amd64.zip
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-windows-amd64.zip/mvnd-${{ env.VERSION }}-windows-amd64.zip
- asset_name: mvnd-${{ env.VERSION }}-windows-amd64.zip
- asset_content_type: application/zip
-
- - name: Deploy mvnd-windows-amd64.zip.sha256
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-windows-amd64.zip/mvnd-${{ env.VERSION }}-windows-amd64.zip.sha256
- asset_name: mvnd-${{ env.VERSION }}-windows-amd64.zip.sha256
- asset_content_type: text/plain
-
- - uses: actions/checkout@v1
-
- - name: Publish on sdkman.io
- env:
- SDKMAN_CONSUMER_KEY: ${{ secrets.SDKMAN_CONSUMER_KEY }}
- SDKMAN_CONSUMER_TOKEN: ${{ secrets.SDKMAN_CONSUMER_TOKEN }}
- run: ./build/publish-on-sdkman.sh "${{ env.VERSION }}"
-
- - name: Update the mvnd Homebrew tap
- env:
- MVND_CI_TOKEN: ${{ secrets.MVND_CI_TOKEN }}
- run: |
- curl -u ":$MVND_CI_TOKEN" \
- -X POST \
- -H "Accept: application/vnd.github.v3+json" \
- https://api.github.com/repos/mvndaemon/homebrew-mvnd/actions/workflows/release.yaml/dispatches \
- -d '{"ref": "master"}'
diff --git a/pom.xml b/pom.xml
index 90cc1d33..8080a62a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,6 +41,8 @@
1.8
1.8
false
+ apache/maven-mvnd
+ github.com:${project.github.repository}
1.0.0
@@ -71,9 +73,19 @@
1.2.0
3.0.0-M5
1.3.2
+ 3.0.0-M5
1.13.9
1.0.19
+ 1.0.0
+ false
+ ALWAYS
+ ALWAYS
+ false
+ false
+ NEVER
+ NEVER
+
3.27.0-GA
@@ -91,9 +103,9 @@
- scm:git:git@github.com:mvndaemon/mvnd.git
- scm:git:git@github.com:mvndaemon/mvnd.git
- https://github.com/mvndaemon/mvnd
+ ${repository.url}
+ scm:git:${repository.url}.git
+ scm:git:${repository.url}.git
head
@@ -332,6 +344,7 @@ limitations under the License.
**/*.jnilib
**/Makefile*
**/docker/*
+ **/*.tpl
SCRIPT_STYLE
@@ -451,6 +464,16 @@ limitations under the License.
native-image-maven-plugin
${graalvm.plugin.version}
+
+ org.apache.maven.plugins
+ maven-release-plugin
+ ${release.plugin.version}
+
+ false
+ true
+ @{project.version}
+
+
@@ -528,7 +551,127 @@ limitations under the License.
+
+
+ org.jreleaser
+ jreleaser-maven-plugin
+ ${jreleaser.version}
+ false
+
+
+
+
+ dist/target
+
+
+
+ mvnd
+ Maven Daemon
+ Apache-2.0
+ https://github.com/mvndaemon/mvnd
+ The Maven project
+ maven,mvn,daemon,graalvm
+
+
+
+ master
+ true
+ {{projectVersion}}
+ {{projectVersion}}
+
+ ${jreleaser.prerelease}
+
+ ${jreleaser.overwrite}
+
+ ${jreleaser.update}
+
+ ${jreleaser.upload.assets}
+
+ ALWAYS
+ - {{commitShortHash}} {{commitTitle}}
+
+ - {{contributorName}}{{#contributorUsernameAsLink}} ({{.}}){{/contributorUsernameAsLink}}
+
+
+
+
+ Updated CHANGELOG.md
+
+
+
+
+ changelog
+ changelog
+ update-changelog
+
+
+
+ changelog
+ GitHub,bot
+
+
+
+
+
+
+ NATIVE_IMAGE
+ ${jreleaser.distribution.active}
+
+
+ {{artifactsDir}}/mvnd-{{projectVersion}}-linux-amd64.zip
+ linux-x86_64
+
+
+ {{artifactsDir}}/mvnd-{{projectVersion}}-windows-amd64.zip
+ windows-x86_64
+
+
+ {{artifactsDir}}/mvnd-{{projectVersion}}-darwin-amd64.zip
+ osx-x86_64
+
+
+
+ ${jreleaser.brew.active}
+ true
+
+ mvndaemon
+ homebrew-mvnd
+ Release {{tagName}}
+
+
+
+ ${jreleaser.sdkman.active}
+
+
+
+
+
+
+
+
+ prerelease
+
+ true
+ PRERELEASE
+ NEVER
+ false
+ false
+
+
+
+ release
+
+ false
+ RELEASE
+ ALWAYS
+ false
+ true
+ RELEASE
+ RELEASE
+
+
+
diff --git a/src/jreleaser/distributions/mvnd/brew/README.md.tpl b/src/jreleaser/distributions/mvnd/brew/README.md.tpl
new file mode 100644
index 00000000..aa8f4410
--- /dev/null
+++ b/src/jreleaser/distributions/mvnd/brew/README.md.tpl
@@ -0,0 +1,15 @@
+# Homebrew tap for mvnd
+
+This is a homebrew tap for https://github.com/{{repoOwner}}/mvnd[`mvnd`, the Maven Daemon].
+
+Tap and install with
+
+```
+brew install {{repoOwner}}/homebrew-mvnd/mvnd
+```
+
+Afterwards, `mvnd` is available on the path and you can build your Maven based Java programs like this:
+
+```
+mvnd clean verify
+```
diff --git a/src/jreleaser/distributions/mvnd/brew/formula-multi.rb.tpl b/src/jreleaser/distributions/mvnd/brew/formula-multi.rb.tpl
new file mode 100644
index 00000000..55bbf590
--- /dev/null
+++ b/src/jreleaser/distributions/mvnd/brew/formula-multi.rb.tpl
@@ -0,0 +1,67 @@
+# {{jreleaserCreationStamp}}
+class {{brewFormulaName}} < Formula
+ desc "{{projectDescription}}"
+ homepage "{{projectWebsite}}"
+ version "{{projectVersion}}"
+ license "{{projectLicense}}"
+
+ {{brewMultiPlatform}}
+
+ livecheck do
+ url :stable
+ end
+
+ depends_on "openjdk" => :recommended
+
+ def install
+ # Remove windows files
+ rm_f Dir["bin/*.cmd"]
+
+ # Replace mvnd by using mvnd.sh
+ if Hardware::CPU.arm?
+ mv "bin/mvnd.sh", "bin/mvnd", force: true
+ end
+
+ libexec.install Dir["*"]
+
+ Pathname.glob("#{libexec}/bin/*") do |file|
+ next if file.directory?
+
+ basename = file.basename
+ (bin/basename).write_env_script file, Language::Java.overridable_java_home_env
+ end
+
+ daemon = var + 'run/mvnd'
+ FileUtils.mkdir_p "#{daemon}", mode: 0775 unless daemon.exist?
+ FileUtils.ln_sf(daemon, libexec + 'daemon')
+ end
+
+ test do
+ (testpath/"settings.xml").write <<~EOS
+ #{testpath}/repository
+ EOS
+ (testpath/"pom.xml").write <<~EOS
+
+
+ 4.0.0
+ org.homebrew
+ maven-test
+ 1.0.0-SNAPSHOT
+
+ 1.8
+ 1.8
+
+
+ EOS
+ (testpath/"src/main/java/org/homebrew/MavenTest.java").write <<~EOS
+ package org.homebrew;
+ public class MavenTest {
+ public static void main(String[] args) {
+ System.out.println("Testing Maven with Homebrew!");
+ }
+ }
+ EOS
+ system "#{bin}/mvnd", "-gs", "#{testpath}/settings.xml", "compile"
+ end
+end