mirror of
https://github.com/apache/maven-mvnd.git
synced 2025-09-10 13:15:27 +00:00
This commit is contained in:
12
.github/workflows/early-access.yaml
vendored
12
.github/workflows/early-access.yaml
vendored
@@ -123,14 +123,8 @@ jobs:
|
||||
name: daemon-test-logs-${{ env.OS }}
|
||||
path: integration-tests/target/mvnd-tests/**/daemon*.log
|
||||
|
||||
- name: 'Upload m39 artifact'
|
||||
- name: 'Upload artifact'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: mvnd-m39-${{ env.OS }}
|
||||
path: dist-m39/target/maven-mvnd-*.zip
|
||||
|
||||
- name: 'Upload m40 artifact'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: mvnd-m40-${{ env.OS }}
|
||||
path: dist-m40/target/maven-mvnd-*.zip
|
||||
name: mvnd-${{ env.OS }}
|
||||
path: dist/target/maven-mvnd-*.zip
|
||||
|
102
.github/workflows/release.yaml
vendored
102
.github/workflows/release.yaml
vendored
@@ -98,10 +98,8 @@ jobs:
|
||||
with:
|
||||
name: artifacts
|
||||
path: |
|
||||
dist-m39/target/maven-mvnd-*.zip
|
||||
dist-m39/target/maven-mvnd-*.tar.gz
|
||||
dist-m40/target/maven-mvnd-*.zip
|
||||
dist-m40/target/maven-mvnd-*.tar.gz
|
||||
dist/target/maven-mvnd-*.zip
|
||||
dist/target/maven-mvnd-*.tar.gz
|
||||
|
||||
source:
|
||||
name: 'Build source distributions'
|
||||
@@ -201,123 +199,63 @@ jobs:
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-src.tar.gz
|
||||
asset_content_type: application/tar.gz
|
||||
|
||||
- name: Deploy maven-mvnd-m39-linux-amd64.zip
|
||||
- name: Deploy maven-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: artifacts/dist-m39/target/maven-mvnd-${{ env.VERSION }}-m39-linux-amd64.zip
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m39-linux-amd64.zip
|
||||
asset_path: artifacts/dist/target/maven-mvnd-${{ env.VERSION }}-linux-amd64.zip
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-linux-amd64.zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
- name: Deploy maven-mvnd-m39-linux-amd64.tar.gz
|
||||
- name: Deploy maven-mvnd-linux-amd64.tar.gz
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: artifacts/dist-m39/target/maven-mvnd-${{ env.VERSION }}-m39-linux-amd64.tar.gz
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m39-linux-amd64.tar.gz
|
||||
asset_path: artifacts/dist/target/maven-mvnd-${{ env.VERSION }}-linux-amd64.tar.gz
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-linux-amd64.tar.gz
|
||||
asset_content_type: application/x-gzip
|
||||
|
||||
- name: Deploy maven-mvnd-m39-darwin-amd64.zip
|
||||
- name: Deploy maven-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: artifacts/dist-m39/target/maven-mvnd-${{ env.VERSION }}-m39-darwin-amd64.zip
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m39-darwin-amd64.zip
|
||||
asset_path: artifacts/dist/target/maven-mvnd-${{ env.VERSION }}-darwin-amd64.zip
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-darwin-amd64.zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
- name: Deploy maven-mvnd-m39-darwin-amd64.tar.gz
|
||||
- name: Deploy maven-mvnd-darwin-amd64.tar.gz
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: artifacts/dist-m39/target/maven-mvnd-${{ env.VERSION }}-m39-darwin-amd64.tar.gz
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m39-darwin-amd64.tar.gz
|
||||
asset_path: artifacts/dist/target/maven-mvnd-${{ env.VERSION }}-darwin-amd64.tar.gz
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-darwin-amd64.tar.gz
|
||||
asset_content_type: application/x-gzip
|
||||
|
||||
- name: Deploy maven-mvnd-m39-windows-amd64.zip
|
||||
- name: Deploy maven-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: artifacts/dist-m39/target/maven-mvnd-${{ env.VERSION }}-m39-windows-amd64.zip
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m39-windows-amd64.zip
|
||||
asset_path: artifacts/dist/target/maven-mvnd-${{ env.VERSION }}-windows-amd64.zip
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-windows-amd64.zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
- name: Deploy maven-mvnd-m39-windows-amd64.tar.gz
|
||||
- name: Deploy maven-mvnd-windows-amd64.tar.gz
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: artifacts/dist-m39/target/maven-mvnd-${{ env.VERSION }}-m39-windows-amd64.tar.gz
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m39-windows-amd64.tar.gz
|
||||
asset_content_type: application/x-gzip
|
||||
|
||||
- name: Deploy maven-mvnd-m40-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: artifacts/dist-m40/target/maven-mvnd-${{ env.VERSION }}-m40-linux-amd64.zip
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m40-linux-amd64.zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
- name: Deploy maven-mvnd-m40-linux-amd64.tar.gz
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: artifacts/dist-m40/target/maven-mvnd-${{ env.VERSION }}-m40-linux-amd64.tar.gz
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m40-linux-amd64.tar.gz
|
||||
asset_content_type: application/x-gzip
|
||||
|
||||
- name: Deploy maven-mvnd-m40-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: artifacts/dist-m40/target/maven-mvnd-${{ env.VERSION }}-m40-darwin-amd64.zip
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m40-darwin-amd64.zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
- name: Deploy maven-mvnd-m40-darwin-amd64.tar.gz
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: artifacts/dist-m40/target/maven-mvnd-${{ env.VERSION }}-m40-darwin-amd64.tar.gz
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m40-darwin-amd64.tar.gz
|
||||
asset_content_type: application/x-gzip
|
||||
|
||||
- name: Deploy maven-mvnd-m40-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: artifacts/dist-m40/target/maven-mvnd-${{ env.VERSION }}-m40-windows-amd64.zip
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m40-windows-amd64.zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
- name: Deploy maven-mvnd-m40-windows-amd64.tar.gz
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: artifacts/dist-m40/target/maven-mvnd-${{ env.VERSION }}-m40-windows-amd64.tar.gz
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-m40-windows-amd64.tar.gz
|
||||
asset_path: artifacts/dist/target/maven-mvnd-${{ env.VERSION }}-windows-amd64.tar.gz
|
||||
asset_name: maven-mvnd-${{ env.VERSION }}-windows-amd64.tar.gz
|
||||
asset_content_type: application/x-gzip
|
||||
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-agent</artifactId>
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-build-maven-plugin</artifactId>
|
||||
|
@@ -17,7 +17,6 @@
|
||||
|
||||
set -e
|
||||
export VERSION=$1
|
||||
export QUALIFIER=m39
|
||||
|
||||
if [ "${VERSION}x" = "x" ]
|
||||
then
|
||||
@@ -29,15 +28,15 @@ rm -Rf target/releases/${VERSION}
|
||||
mkdir -p target/releases/${VERSION}
|
||||
pushd target/releases
|
||||
|
||||
darwinAmdZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-${QUALIFIER}-darwin-amd64.zip"
|
||||
darwinAmdZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-darwin-amd64.zip"
|
||||
darwinAmdSha256="$(curl -L --silent "${darwinAmdZipUrl}.sha256")"
|
||||
darwinArmZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-${QUALIFIER}-darwin-aarch64.zip"
|
||||
darwinArmZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-darwin-aarch64.zip"
|
||||
darwinArmSha256="$(curl -L --silent "${darwinArmZipUrl}.sha256")"
|
||||
linuxZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-${QUALIFIER}-linux-amd64.zip"
|
||||
linuxZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-linux-amd64.zip"
|
||||
linuxSha256="$(curl -L --silent "${linuxZipUrl}.sha256")"
|
||||
|
||||
echo "Updating Formula/mvnd.rb with"
|
||||
echo "version: ${VERSION}-${QUALIFIER}"
|
||||
echo "version: ${VERSION}"
|
||||
echo "darwin-amd-url: ${darwinAmdZipUrl}"
|
||||
echo "darwin-amd-sha256: ${darwinAmdSha256}"
|
||||
echo "darwin-arm-url: ${darwinArmZipUrl}"
|
||||
@@ -52,14 +51,14 @@ cd homebrew-mvnd
|
||||
perl -i -0pe 's|(on_macos do[\s\S\n]+on_intel do\n\s+url )\"([^\"]+)\"(\n\s+sha256 )\"([^\"]+)\"|$1\"'${darwinAmdZipUrl}'\"$3\"'${darwinAmdSha256}'\"|g' Formula/mvnd.rb
|
||||
perl -i -0pe 's|(on_macos do[\s\S\n]+on_arm do\n\s+url )\"([^\"]+)\"(\n\s+sha256 )\"([^\"]+)\"|$1\"'${darwinArmZipUrl}'\"$3\"'${darwinArmSha256}'\"|g' Formula/mvnd.rb
|
||||
perl -i -0pe 's|(on_linux do\n\s+url )\"([^\"]+)\"(\n\s+sha256 )\"([^\"]+)\"|$1\"'${linuxZipUrl}'\"$3\"'${linuxSha256}'\"|g' Formula/mvnd.rb
|
||||
perl -i -0pe 's|(version )"([^\"]+)"|$1\"'${VERSION}-${QUALIFIER}'\"|g' Formula/mvnd.rb
|
||||
perl -i -0pe 's|(version )"([^\"]+)"|$1\"'${VERSION}'\"|g' Formula/mvnd.rb
|
||||
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
echo "Committing release ${VERSION}-${QUALIFIER}"
|
||||
echo "Committing release ${VERSION}"
|
||||
git config --global user.email "gnodet@gmail.com"
|
||||
git config --global user.name "Guillaume Nodet"
|
||||
git add -A
|
||||
git commit -m "Release ${VERSION}-${QUALIFIER}"
|
||||
git commit -m "Release ${VERSION}"
|
||||
#git push origin master
|
||||
else
|
||||
echo "Nothing to commit"
|
||||
|
@@ -36,16 +36,15 @@ function publishRelease() {
|
||||
VERSION=$1
|
||||
SDKMAN_PLATFORM=$2
|
||||
MVND_PLATFORM=$3
|
||||
QUALIFIER=$4
|
||||
|
||||
FILE="maven-mvnd-${VERSION}-${QUALIFIER}-${MVND_PLATFORM}.zip"
|
||||
FILE="maven-mvnd-${VERSION}-${MVND_PLATFORM}.zip"
|
||||
URL="https://downloads.apache.org/maven/mvnd/${VERSION}/${FILE}"
|
||||
RESPONSE="$(curl -s -X POST \
|
||||
-H "Consumer-Key: ${SDKMAN_CONSUMER_KEY}" \
|
||||
-H "Consumer-Token: ${SDKMAN_CONSUMER_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Accept: application/json" \
|
||||
-d '{"candidate": "mvnd", "version": "'${VERSION}-${QUALIFIER}'", "platform" : "'${SDKMAN_PLATFORM}'", "url": "'${URL}'"}' \
|
||||
-d '{"candidate": "mvnd", "version": "'${VERSION}'", "platform" : "'${SDKMAN_PLATFORM}'", "url": "'${URL}'"}' \
|
||||
https://vendors.sdkman.io/release)"
|
||||
|
||||
node -pe "
|
||||
@@ -59,14 +58,10 @@ function publishRelease() {
|
||||
" "${RESPONSE}"
|
||||
}
|
||||
|
||||
publishRelease ${VERSION} LINUX_64 linux-amd64 m39
|
||||
publishRelease ${VERSION} MAC_OSX darwin-amd64 m39
|
||||
publishRelease ${VERSION} MAC_ARM64 darwin-aarch64 m39
|
||||
publishRelease ${VERSION} WINDOWS_64 windows-amd64 m39
|
||||
publishRelease ${VERSION} LINUX_64 linux-amd64 m40
|
||||
publishRelease ${VERSION} MAC_OSX darwin-amd64 m40
|
||||
publishRelease ${VERSION} MAC_ARM64 darwin-aarch64 m40
|
||||
publishRelease ${VERSION} WINDOWS_64 windows-amd64 m40
|
||||
publishRelease ${VERSION} LINUX_64 linux-amd64
|
||||
publishRelease ${VERSION} MAC_OSX darwin-amd64
|
||||
publishRelease ${VERSION} MAC_ARM64 darwin-aarch64
|
||||
publishRelease ${VERSION} WINDOWS_64 windows-amd64
|
||||
|
||||
echo "Setting ${VERSION} as a default"
|
||||
RESPONSE="$(curl -s -X PUT \
|
||||
@@ -95,7 +90,7 @@ RESPONSE="$(curl -s -X POST \
|
||||
-H "Consumer-Token: ${SDKMAN_CONSUMER_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Accept: application/json" \
|
||||
-d '{"candidate": "mvnd", "version": "'${VERSION}-m39'", "url": "'${RELEASE_URL}'"}' \
|
||||
-d '{"candidate": "mvnd", "version": "'${VERSION}'", "url": "'${RELEASE_URL}'"}' \
|
||||
https://vendors.sdkman.io/announce/struct)"
|
||||
|
||||
node -pe "
|
||||
@@ -108,20 +103,3 @@ node -pe "
|
||||
}
|
||||
" "${RESPONSE}"
|
||||
|
||||
RESPONSE="$(curl -s -X POST \
|
||||
-H "Consumer-Key: ${SDKMAN_CONSUMER_KEY}" \
|
||||
-H "Consumer-Token: ${SDKMAN_CONSUMER_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Accept: application/json" \
|
||||
-d '{"candidate": "mvnd", "version": "'${VERSION}-m40'", "url": "'${RELEASE_URL}'"}' \
|
||||
https://vendors.sdkman.io/announce/struct)"
|
||||
|
||||
node -pe "
|
||||
var json = JSON.parse(process.argv[1]);
|
||||
if (json.status == 200 || json.status == 201) {
|
||||
json.status + ' as expected from /announce/freeform';
|
||||
} else {
|
||||
console.log('Unexpected status from /announce/freeform: ' + process.argv[1]);
|
||||
process.exit(1);
|
||||
}
|
||||
" "${RESPONSE}"
|
||||
|
@@ -48,7 +48,7 @@ gh api $downloadUrl > artifacts-${VERSION}.zip
|
||||
unzip artifacts-${VERSION}.zip -d ${VERSION}
|
||||
cd ${VERSION}
|
||||
|
||||
for dist in m39-darwin-amd64.zip m39-darwin-amd64.tar.gz m39-darwin-aarch64.zip m39-darwin-aarch64.tar.gz m39-linux-amd64.zip m39-linux-amd64.tar.gz m39-windows-amd64.zip m39-windows-amd64.tar.gz m40-darwin-amd64.zip m40-darwin-amd64.tar.gz m40-darwin-aarch64.zip m40-darwin-aarch64.tar.gz m40-linux-amd64.zip m40-linux-amd64.tar.gz m40-windows-amd64.zip m40-windows-amd64.tar.gz src.zip src.tar.gz
|
||||
for dist in darwin-amd64.zip darwin-amd64.tar.gz darwin-aarch64.zip darwin-aarch64.tar.gz linux-amd64.zip linux-amd64.tar.gz windows-amd64.zip windows-amd64.tar.gz src.zip src.tar.gz
|
||||
do
|
||||
FILE=maven-mvnd-${VERSION}-${dist}
|
||||
# sha256 are used by homebrew which does not support sha512 atm
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-client</artifactId>
|
||||
@@ -31,7 +31,6 @@
|
||||
<name>Maven Daemon - Client</name>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.release>11</maven.compiler.release>
|
||||
<graalvm-native-static-opt />
|
||||
<graalvm-native-glibc-opt />
|
||||
<patchelf.skip>true</patchelf.skip>
|
||||
@@ -80,28 +79,6 @@
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>enforce-bytecode-version</id>
|
||||
<goals>
|
||||
<goal>enforce</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<rules>
|
||||
<enforceBytecodeVersion>
|
||||
<maxJdkVersion>${maven.compiler.release}</maxJdkVersion>
|
||||
<excludes>
|
||||
<exclude>org.graalvm.nativeimage:svm</exclude>
|
||||
</excludes>
|
||||
</enforceBytecodeVersion>
|
||||
</rules>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>buildnumber-maven-plugin</artifactId>
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-common</artifactId>
|
||||
|
@@ -1,59 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright 2019 the original author or authors.
|
||||
|
||||
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.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-daemon-m39</artifactId>
|
||||
|
||||
<packaging>jar</packaging>
|
||||
<name>Maven Daemon - Daemon 3.9.x specifics</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-core</artifactId>
|
||||
<version>${maven3.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-embedder</artifactId>
|
||||
<version>${maven3.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-daemon</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.eclipse.sisu</groupId>
|
||||
<artifactId>sisu-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
File diff suppressed because it is too large
Load Diff
@@ -1,48 +0,0 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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.
|
||||
*/
|
||||
package org.apache.maven.project;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import org.apache.maven.model.building.ModelCache;
|
||||
|
||||
public class SnapshotModelCache implements ModelCache {
|
||||
|
||||
private final ModelCache globalCache;
|
||||
private final ModelCache reactorCache;
|
||||
|
||||
public SnapshotModelCache(ModelCache globalCache, ModelCache reactorCache) {
|
||||
this.globalCache = Objects.requireNonNull(globalCache);
|
||||
this.reactorCache = Objects.requireNonNull(reactorCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void put(String groupId, String artifactId, String version, String tag, Object data) {
|
||||
getDelegate(version).put(groupId, artifactId, version, tag, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object get(String groupId, String artifactId, String version, String tag) {
|
||||
return getDelegate(version).get(groupId, artifactId, version, tag);
|
||||
}
|
||||
|
||||
private ModelCache getDelegate(String version) {
|
||||
return version.contains("SNAPSHOT") || version.contains("${") ? reactorCache : globalCache;
|
||||
}
|
||||
}
|
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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.
|
||||
*/
|
||||
package org.apache.maven.project;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.apache.maven.model.building.ModelCache;
|
||||
import org.apache.maven.repository.internal.DefaultModelCacheFactory;
|
||||
import org.apache.maven.repository.internal.ModelCacheFactory;
|
||||
import org.eclipse.aether.DefaultRepositoryCache;
|
||||
import org.eclipse.aether.DefaultRepositorySystemSession;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
import org.eclipse.sisu.Priority;
|
||||
|
||||
import static org.mvndaemon.mvnd.common.Environment.MVND_NO_MODEL_CACHE;
|
||||
|
||||
@Singleton
|
||||
@Named
|
||||
@Priority(10)
|
||||
public class SnapshotModelCacheFactory implements ModelCacheFactory {
|
||||
|
||||
private final ModelCacheFactory factory;
|
||||
private final ModelCache globalCache;
|
||||
|
||||
@Inject
|
||||
public SnapshotModelCacheFactory(DefaultModelCacheFactory factory) {
|
||||
this.factory = factory;
|
||||
DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
|
||||
session.setCache(new DefaultRepositoryCache());
|
||||
this.globalCache = factory.createCache(session);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelCache createCache(RepositorySystemSession session) {
|
||||
boolean noModelCache =
|
||||
Boolean.parseBoolean(MVND_NO_MODEL_CACHE.asOptional().orElse(MVND_NO_MODEL_CACHE.getDefault()));
|
||||
ModelCache reactorCache = factory.createCache(session);
|
||||
ModelCache globalCache = noModelCache ? reactorCache : this.globalCache;
|
||||
return new SnapshotModelCache(globalCache, reactorCache);
|
||||
}
|
||||
}
|
@@ -1,134 +0,0 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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.
|
||||
*/
|
||||
package org.mvndaemon.mvnd.cache.invalidating;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.maven.model.Plugin;
|
||||
import org.apache.maven.plugin.DefaultPluginDescriptorCache;
|
||||
import org.apache.maven.plugin.InvalidPluginDescriptorException;
|
||||
import org.apache.maven.plugin.PluginDescriptorParsingException;
|
||||
import org.apache.maven.plugin.PluginResolutionException;
|
||||
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
||||
import org.codehaus.plexus.classworlds.realm.ClassRealm;
|
||||
import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
|
||||
import org.eclipse.aether.RepositorySystemSession;
|
||||
import org.eclipse.aether.repository.RemoteRepository;
|
||||
import org.eclipse.sisu.Priority;
|
||||
import org.mvndaemon.mvnd.cache.Cache;
|
||||
import org.mvndaemon.mvnd.cache.CacheFactory;
|
||||
import org.mvndaemon.mvnd.cache.CacheRecord;
|
||||
|
||||
@Singleton
|
||||
@Named
|
||||
@Priority(10)
|
||||
public class InvalidatingPluginDescriptorCache extends DefaultPluginDescriptorCache {
|
||||
|
||||
protected static class Record implements CacheRecord {
|
||||
|
||||
private final PluginDescriptor descriptor;
|
||||
|
||||
public Record(PluginDescriptor descriptor) {
|
||||
this.descriptor = descriptor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Stream<Path> getDependencyPaths() {
|
||||
return Optional.ofNullable(descriptor.getArtifacts()).orElse(Collections.emptyList()).stream()
|
||||
.map(artifact -> artifact.getFile().toPath());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
ClassRealm realm = descriptor.getClassRealm();
|
||||
if (realm == null) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
realm.getWorld().disposeRealm(realm.getId());
|
||||
} catch (NoSuchRealmException e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final Cache<Key, Record> cache;
|
||||
|
||||
@Inject
|
||||
public InvalidatingPluginDescriptorCache(CacheFactory cacheFactory) {
|
||||
this.cache = cacheFactory.newCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key createKey(Plugin plugin, List<RemoteRepository> repositories, RepositorySystemSession session) {
|
||||
return super.createKey(plugin, repositories, session);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PluginDescriptor get(Key key) {
|
||||
Record r = cache.get(key);
|
||||
return r != null ? clone(r.descriptor) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PluginDescriptor get(Key key, PluginDescriptorSupplier supplier)
|
||||
throws PluginDescriptorParsingException, PluginResolutionException, InvalidPluginDescriptorException {
|
||||
try {
|
||||
Record r = cache.computeIfAbsent(key, k -> {
|
||||
try {
|
||||
return new Record(clone(supplier.load()));
|
||||
} catch (PluginDescriptorParsingException
|
||||
| PluginResolutionException
|
||||
| InvalidPluginDescriptorException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
return clone(r.descriptor);
|
||||
} catch (RuntimeException e) {
|
||||
if (e.getCause() instanceof PluginDescriptorParsingException) {
|
||||
throw (PluginDescriptorParsingException) e.getCause();
|
||||
}
|
||||
if (e.getCause() instanceof PluginResolutionException) {
|
||||
throw (PluginResolutionException) e.getCause();
|
||||
}
|
||||
if (e.getCause() instanceof InvalidPluginDescriptorException) {
|
||||
throw (InvalidPluginDescriptorException) e.getCause();
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void put(Key key, PluginDescriptor descriptor) {
|
||||
cache.put(key, new Record(clone(descriptor)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() {
|
||||
cache.clear();
|
||||
}
|
||||
}
|
@@ -1,79 +0,0 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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.
|
||||
*/
|
||||
package org.mvndaemon.mvnd.plugin;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.maven.plugin.version.PluginVersionRequest;
|
||||
import org.apache.maven.plugin.version.PluginVersionResolutionException;
|
||||
import org.apache.maven.plugin.version.PluginVersionResolver;
|
||||
import org.apache.maven.plugin.version.PluginVersionResult;
|
||||
import org.apache.maven.plugin.version.internal.DefaultPluginVersionResolver;
|
||||
import org.eclipse.aether.SessionData;
|
||||
import org.eclipse.aether.repository.RemoteRepository;
|
||||
import org.eclipse.sisu.Priority;
|
||||
import org.eclipse.sisu.Typed;
|
||||
|
||||
@Named
|
||||
@Singleton
|
||||
@Priority(10)
|
||||
@Typed(PluginVersionResolver.class)
|
||||
public class CachingPluginVersionResolver extends DefaultPluginVersionResolver {
|
||||
|
||||
private static final Object CACHE_KEY = new Object();
|
||||
|
||||
@Override
|
||||
public PluginVersionResult resolve(PluginVersionRequest request) throws PluginVersionResolutionException {
|
||||
Map<String, PluginVersionResult> cache =
|
||||
getCache(request.getRepositorySession().getData());
|
||||
String key = getKey(request);
|
||||
PluginVersionResult result = cache.get(key);
|
||||
if (result == null) {
|
||||
result = super.resolve(request);
|
||||
cache.putIfAbsent(key, result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Map<String, PluginVersionResult> getCache(SessionData data) {
|
||||
Map<String, PluginVersionResult> cache = (Map<String, PluginVersionResult>) data.get(CACHE_KEY);
|
||||
while (cache == null) {
|
||||
cache = new ConcurrentHashMap<>(256);
|
||||
if (data.set(CACHE_KEY, null, cache)) {
|
||||
break;
|
||||
}
|
||||
cache = (Map<String, PluginVersionResult>) data.get(CACHE_KEY);
|
||||
}
|
||||
return cache;
|
||||
}
|
||||
|
||||
private static String getKey(PluginVersionRequest request) {
|
||||
return Stream.concat(
|
||||
Stream.of(request.getGroupId(), request.getArtifactId()),
|
||||
request.getRepositories().stream().map(RemoteRepository::getId))
|
||||
.collect(Collectors.joining(":"));
|
||||
}
|
||||
}
|
@@ -1,59 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright 2019 the original author or authors.
|
||||
|
||||
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.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-daemon-m40</artifactId>
|
||||
|
||||
<packaging>jar</packaging>
|
||||
<name>Maven Daemon - Daemon 4.0.x specifics</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-core</artifactId>
|
||||
<version>${maven4.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-embedder</artifactId>
|
||||
<version>${maven4.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-daemon</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.eclipse.sisu</groupId>
|
||||
<artifactId>sisu-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@@ -1,121 +0,0 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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.
|
||||
*/
|
||||
package org.mvndaemon.mvnd.cache.invalidating;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.maven.artifact.Artifact;
|
||||
import org.apache.maven.plugin.DefaultPluginRealmCache;
|
||||
import org.apache.maven.plugin.PluginContainerException;
|
||||
import org.apache.maven.plugin.PluginResolutionException;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.codehaus.plexus.classworlds.realm.ClassRealm;
|
||||
import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
|
||||
import org.eclipse.sisu.Priority;
|
||||
import org.mvndaemon.mvnd.cache.Cache;
|
||||
import org.mvndaemon.mvnd.cache.CacheFactory;
|
||||
|
||||
@Singleton
|
||||
@Named
|
||||
@Priority(10)
|
||||
public class InvalidatingPluginRealmCache extends DefaultPluginRealmCache {
|
||||
|
||||
protected static class Record implements org.mvndaemon.mvnd.cache.CacheRecord {
|
||||
|
||||
final CacheRecord record;
|
||||
|
||||
public Record(CacheRecord record) {
|
||||
this.record = record;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Stream<Path> getDependencyPaths() {
|
||||
return record.getArtifacts().stream()
|
||||
.map(artifact -> artifact.getFile().toPath());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
ClassRealm realm = record.getRealm();
|
||||
try {
|
||||
realm.getWorld().disposeRealm(realm.getId());
|
||||
} catch (NoSuchRealmException e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final Cache<Key, Record> cache;
|
||||
|
||||
@Inject
|
||||
public InvalidatingPluginRealmCache(CacheFactory cacheFactory) {
|
||||
cache = cacheFactory.newCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CacheRecord get(Key key) {
|
||||
Record r = cache.get(key);
|
||||
return r != null ? r.record : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CacheRecord get(Key key, PluginRealmSupplier supplier)
|
||||
throws PluginResolutionException, PluginContainerException {
|
||||
try {
|
||||
Record r = cache.computeIfAbsent(key, k -> {
|
||||
try {
|
||||
return new Record(supplier.load());
|
||||
} catch (PluginResolutionException | PluginContainerException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
return r.record;
|
||||
} catch (RuntimeException e) {
|
||||
if (e.getCause() instanceof PluginResolutionException) {
|
||||
throw (PluginResolutionException) e.getCause();
|
||||
}
|
||||
if (e.getCause() instanceof PluginContainerException) {
|
||||
throw (PluginContainerException) e.getCause();
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CacheRecord put(Key key, ClassRealm pluginRealm, List<Artifact> pluginArtifacts) {
|
||||
CacheRecord record = super.put(key, pluginRealm, pluginArtifacts);
|
||||
super.cache.remove(key);
|
||||
cache.put(key, new Record(record));
|
||||
return record;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() {
|
||||
cache.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(MavenProject project, Key key, CacheRecord record) {}
|
||||
}
|
@@ -1,190 +0,0 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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.
|
||||
*/
|
||||
package org.mvndaemon.mvnd.cache.invalidating;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.PathMatcher;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.eventspy.AbstractEventSpy;
|
||||
import org.apache.maven.eventspy.EventSpy;
|
||||
import org.apache.maven.execution.MavenExecutionRequest;
|
||||
import org.apache.maven.execution.MavenExecutionResult;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.eclipse.sisu.Typed;
|
||||
import org.mvndaemon.mvnd.common.Environment;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@Named
|
||||
@Singleton
|
||||
@Typed(EventSpy.class)
|
||||
public class InvalidatingRealmCacheEventSpy extends AbstractEventSpy {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(InvalidatingRealmCacheEventSpy.class);
|
||||
|
||||
private final InvalidatingPluginRealmCache pluginCache;
|
||||
private final InvalidatingExtensionRealmCache extensionCache;
|
||||
private final InvalidatingProjectArtifactsCache projectArtifactsCache;
|
||||
private Path multiModuleProjectDirectory;
|
||||
private String pattern;
|
||||
private PathMatcher matcher;
|
||||
|
||||
@Inject
|
||||
public InvalidatingRealmCacheEventSpy(
|
||||
InvalidatingPluginRealmCache cache,
|
||||
InvalidatingExtensionRealmCache extensionCache,
|
||||
InvalidatingProjectArtifactsCache projectArtifactsCache) {
|
||||
this.pluginCache = cache;
|
||||
this.extensionCache = extensionCache;
|
||||
this.projectArtifactsCache = projectArtifactsCache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(Object event) throws Exception {
|
||||
try {
|
||||
if (event instanceof MavenExecutionRequest) {
|
||||
/* Store the multiModuleProjectDirectory path */
|
||||
multiModuleProjectDirectory = ((MavenExecutionRequest) event)
|
||||
.getMultiModuleProjectDirectory()
|
||||
.toPath();
|
||||
pattern = Environment.MVND_PLUGIN_REALM_EVICT_PATTERN
|
||||
.asOptional()
|
||||
.orElse(Environment.MVND_PLUGIN_REALM_EVICT_PATTERN.getDefault());
|
||||
if (!pattern.isEmpty()) {
|
||||
String[] patterns = pattern.split(",");
|
||||
List<PathMatcher> matchers = new ArrayList<>();
|
||||
for (String pattern : patterns) {
|
||||
if (pattern.startsWith("mvn:")) {
|
||||
String[] parts = pattern.substring("mvn:".length()).split(":");
|
||||
String groupId, artifactId, version;
|
||||
if (parts.length >= 3) {
|
||||
version = parts[2];
|
||||
} else {
|
||||
version = "*";
|
||||
}
|
||||
if (parts.length >= 2) {
|
||||
groupId = parts[0];
|
||||
artifactId = parts[1];
|
||||
} else {
|
||||
groupId = "*";
|
||||
artifactId = parts[0];
|
||||
}
|
||||
pattern = "glob:**/" + ("*".equals(groupId) ? "" : groupId.replace('.', '/') + "/")
|
||||
+ artifactId + "/" + ("*".equals(version) ? "**" : version + "/**");
|
||||
}
|
||||
matchers.add(getPathMatcher(pattern));
|
||||
}
|
||||
if (matchers.size() == 1) {
|
||||
matcher = matchers.iterator().next();
|
||||
} else {
|
||||
matcher = path -> matchers.stream().anyMatch(f -> f.matches(path));
|
||||
}
|
||||
}
|
||||
} else if (event instanceof MavenExecutionResult) {
|
||||
/* Evict the entries referring to jars under multiModuleProjectDirectory */
|
||||
pluginCache.cache.removeIf(this::shouldEvict);
|
||||
extensionCache.cache.removeIf(this::shouldEvict);
|
||||
MavenExecutionResult mer = (MavenExecutionResult) event;
|
||||
List<MavenProject> projects = mer.getTopologicallySortedProjects();
|
||||
projectArtifactsCache.cache.removeIf(
|
||||
(k, r) -> shouldEvict(projects, (InvalidatingProjectArtifactsCache.CacheKey) k, r));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.warn("Could not notify CliPluginRealmCache", e);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean shouldEvict(
|
||||
List<MavenProject> projects,
|
||||
InvalidatingProjectArtifactsCache.CacheKey k,
|
||||
InvalidatingProjectArtifactsCache.Record v) {
|
||||
return projects.stream().anyMatch(p -> k.matches(p.getGroupId(), p.getArtifactId(), p.getVersion()));
|
||||
}
|
||||
|
||||
private boolean shouldEvict(InvalidatingPluginRealmCache.Key k, InvalidatingPluginRealmCache.Record v) {
|
||||
try {
|
||||
for (URL url : v.record.getRealm().getURLs()) {
|
||||
if (url.getProtocol().equals("file")) {
|
||||
final Path path = Paths.get(url.toURI());
|
||||
if (path.startsWith(multiModuleProjectDirectory)) {
|
||||
LOG.debug(
|
||||
"Removing PluginRealmCache entry {} because it refers to an artifact in the build tree {}",
|
||||
k,
|
||||
path);
|
||||
return true;
|
||||
} else if (matcher != null && matcher.matches(path)) {
|
||||
LOG.debug(
|
||||
"Removing PluginRealmCache entry {} because its components {} matches the eviction pattern '{}'",
|
||||
k,
|
||||
path,
|
||||
pattern);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} catch (URISyntaxException e) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean shouldEvict(InvalidatingExtensionRealmCache.Key k, InvalidatingExtensionRealmCache.Record v) {
|
||||
try {
|
||||
for (URL url : v.record.getRealm().getURLs()) {
|
||||
if (url.getProtocol().equals("file")) {
|
||||
final Path path = Paths.get(url.toURI());
|
||||
if (path.startsWith(multiModuleProjectDirectory)) {
|
||||
LOG.debug(
|
||||
"Removing ExtensionRealmCache entry {} because it refers to an artifact in the build tree {}",
|
||||
k,
|
||||
path);
|
||||
return true;
|
||||
} else if (matcher != null && matcher.matches(path)) {
|
||||
LOG.debug(
|
||||
"Removing ExtensionRealmCache entry {} because its components {} matches the eviction pattern '{}'",
|
||||
k,
|
||||
path,
|
||||
pattern);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} catch (URISyntaxException e) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private static PathMatcher getPathMatcher(String pattern) {
|
||||
if (!pattern.startsWith("glob:") && !pattern.startsWith("regex:")) {
|
||||
pattern = "glob:" + pattern;
|
||||
}
|
||||
return FileSystems.getDefault().getPathMatcher(pattern);
|
||||
}
|
||||
}
|
@@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-daemon</artifactId>
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
<properties>
|
||||
<!-- If using release, sun.misc is not reachable (see SignalHelper) -->
|
||||
<maven.compiler.release />
|
||||
<!-- <maven.compiler.release />-->
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@@ -54,6 +54,10 @@
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-logging</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-embedder</artifactId>
|
||||
|
@@ -1,96 +0,0 @@
|
||||
<!--
|
||||
|
||||
Copyright 2019-2021 the original author or authors.
|
||||
|
||||
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.
|
||||
|
||||
-->
|
||||
<assembly>
|
||||
|
||||
<artifactSet to="/mvn">
|
||||
<artifact id="org.apache.maven:apache-maven:tar.gz:bin:${maven3.version}">
|
||||
<unpack useRoot="false"
|
||||
excludes="lib/maven-slf4j-*" />
|
||||
</artifact>
|
||||
</artifactSet>
|
||||
|
||||
<artifactSet to="/mvn/lib">
|
||||
<artifact id="org.apache.maven.daemon:mvnd-logging:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.slf4j:jul-to-slf4j">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
</artifactSet>
|
||||
|
||||
<artifactSet to="/mvn/lib/mvnd">
|
||||
<artifact id="io.takari.maven:takari-smart-builder:${takari-smart-builder.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.apache.maven.daemon:mvnd-daemon:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.apache.maven.daemon:mvnd-daemon-m39:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.apache.maven.daemon:mvnd-client:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.apache.maven.daemon:mvnd-common:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.apache.maven.daemon:mvnd-agent:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.apache.maven.daemon:mvnd-helper-agent:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.apache.maven.daemon:mvnd-native:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.codehaus.plexus:plexus-interactivity-api">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.jline:jline-terminal">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.jline:jline-terminal-jansi">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
</artifactSet>
|
||||
|
||||
<fileSet to="/">
|
||||
<directory path="${basedir}/../dist/src/main/distro"/>
|
||||
<directory path="${basedir}/..">
|
||||
<include>NOTICE.txt</include>
|
||||
<include>LICENSE.txt</include>
|
||||
<include>README.adoc</include>
|
||||
</directory>
|
||||
</fileSet>
|
||||
<fileSet to="/bin">
|
||||
<directory path="${basedir}/../client/target">
|
||||
<include>mvnd</include>
|
||||
<include>mvnd.exe</include>
|
||||
</directory>
|
||||
<directory path="${basedir}/../dist/src/main/resources">
|
||||
<include>platform-${os.detected.name}-${os.detected.arch}</include>
|
||||
</directory>
|
||||
</fileSet>
|
||||
|
||||
<archive name="maven-mvnd-${project.version}-m39-${os.detected.name}-${os.detected.arch}.zip"
|
||||
executable="**/bin/mvnd"/>
|
||||
|
||||
<archive name="maven-mvnd-${project.version}-m39-${os.detected.name}-${os.detected.arch}.tar.gz"
|
||||
executable="**/bin/mvnd"/>
|
||||
|
||||
</assembly>
|
@@ -1,82 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright 2019-2021 the original author or authors.
|
||||
|
||||
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.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-dist-m40</artifactId>
|
||||
|
||||
<packaging>pom</packaging>
|
||||
<name>Maven Daemon - Distribution for 4.0.x</name>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-agent</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-helper-agent</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-daemon</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-daemon-m40</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>ca.vanzyl.provisio.maven.plugins</groupId>
|
||||
<artifactId>provisio-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>maven-distro</id>
|
||||
<goals>
|
||||
<goal>provision</goal>
|
||||
</goals>
|
||||
<phase>package</phase>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/maven-mvnd-${project.version}-m40-${os.detected.name}-${os.detected.arch}</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
12
dist-m39/pom.xml → dist/pom.xml
vendored
12
dist-m39/pom.xml → dist/pom.xml
vendored
@@ -22,13 +22,13 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-dist-m39</artifactId>
|
||||
<artifactId>mvnd-dist</artifactId>
|
||||
|
||||
<packaging>pom</packaging>
|
||||
<name>Maven Daemon - Distribution for 3.9.x</name>
|
||||
<name>Maven Daemon - Distribution</name>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
@@ -52,10 +52,6 @@
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-daemon</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-daemon-m39</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
@@ -71,7 +67,7 @@
|
||||
</goals>
|
||||
<phase>package</phase>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/maven-mvnd-${project.version}-m39-${os.detected.name}-${os.detected.arch}</outputDirectory>
|
||||
<outputDirectory>${project.build.directory}/maven-mvnd-${project.version}-${os.detected.name}-${os.detected.arch}</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
@@ -18,7 +18,7 @@
|
||||
<assembly>
|
||||
|
||||
<artifactSet to="/mvn">
|
||||
<artifact id="org.apache.maven:apache-maven:tar.gz:bin:${maven4.version}">
|
||||
<artifact id="org.apache.maven:apache-maven:tar.gz:bin:${maven.version}">
|
||||
<unpack useRoot="false"
|
||||
excludes="lib/maven-slf4j-*,lib/plexus-utils-3.*" />
|
||||
</artifact>
|
||||
@@ -43,9 +43,6 @@
|
||||
<artifact id="org.apache.maven.daemon:mvnd-daemon:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.apache.maven.daemon:mvnd-daemon-m40:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
<artifact id="org.apache.maven.daemon:mvnd-client:${project.version}">
|
||||
<exclusion id="*:*"/>
|
||||
</artifact>
|
||||
@@ -90,10 +87,10 @@
|
||||
</directory>
|
||||
</fileSet>
|
||||
|
||||
<archive name="maven-mvnd-${project.version}-m40-${os.detected.name}-${os.detected.arch}.zip"
|
||||
<archive name="maven-mvnd-${project.version}-${os.detected.name}-${os.detected.arch}.zip"
|
||||
executable="**/bin/mvnd"/>
|
||||
|
||||
<archive name="maven-mvnd-${project.version}-m40-${os.detected.name}-${os.detected.arch}.tar.gz"
|
||||
<archive name="maven-mvnd-${project.version}-${os.detected.name}-${os.detected.arch}.tar.gz"
|
||||
executable="**/bin/mvnd"/>
|
||||
|
||||
</assembly>
|
@@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-helper-agent</artifactId>
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-integration-tests</artifactId>
|
||||
@@ -32,8 +32,7 @@
|
||||
<properties>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
<mvnd.m39.home>${project.basedir}/../dist-m39/target/maven-mvnd-${project.version}-m39-${os.detected.name}-${os.detected.arch}</mvnd.m39.home>
|
||||
<mvnd.m40.home>${project.basedir}/../dist-m40/target/maven-mvnd-${project.version}-m40-${os.detected.name}-${os.detected.arch}</mvnd.m40.home>
|
||||
<mvnd.home>${project.basedir}/../dist/target/maven-mvnd-${project.version}-${os.detected.name}-${os.detected.arch}</mvnd.home>
|
||||
<preinstall.artifacts>org/apache/maven/surefire/surefire-providers/${surefire.version}
|
||||
org/apache/maven/surefire/surefire-junit-platform/${surefire.version}
|
||||
org/junit/platform/junit-platform-launcher/${junit-platform-launcher.version}
|
||||
@@ -58,19 +57,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-dist-m39</artifactId>
|
||||
<type>pom</type>
|
||||
<scope>test</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-dist-m40</artifactId>
|
||||
<artifactId>mvnd-dist</artifactId>
|
||||
<type>pom</type>
|
||||
<scope>test</scope>
|
||||
<exclusions>
|
||||
@@ -130,25 +117,7 @@
|
||||
<phase>test</phase>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<mvnd.home>${mvnd.m39.home}</mvnd.home>
|
||||
<project.version>${project.version}</project.version>
|
||||
<mrm.repository.url>${mrm.repository.url}</mrm.repository.url>
|
||||
<os.detected.name>${os.detected.name}</os.detected.name>
|
||||
<os.detected.arch>${os.detected.arch}</os.detected.arch>
|
||||
<mvnd.test.hostLocalMavenRepo>${settings.localRepository}</mvnd.test.hostLocalMavenRepo>
|
||||
<preinstall.artifacts>${preinstall.artifacts}</preinstall.artifacts>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>mvn-40</id>
|
||||
<goals>
|
||||
<goal>test</goal>
|
||||
</goals>
|
||||
<phase>test</phase>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<mvnd.home>${mvnd.m40.home}</mvnd.home>
|
||||
<mvnd.home>${mvnd.home}</mvnd.home>
|
||||
<project.version>${project.version}</project.version>
|
||||
<mrm.repository.url>${mrm.repository.url}</mrm.repository.url>
|
||||
<os.detected.name>${os.detected.name}</os.detected.name>
|
||||
@@ -235,25 +204,7 @@
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<project.version>${project.version}</project.version>
|
||||
<mvnd.home>${mvnd.m39.home}</mvnd.home>
|
||||
<mrm.repository.url>${mrm.repository.url}</mrm.repository.url>
|
||||
<os.detected.name>${os.detected.name}</os.detected.name>
|
||||
<os.detected.arch>${os.detected.arch}</os.detected.arch>
|
||||
<mvnd.test.hostLocalMavenRepo>${settings.localRepository}</mvnd.test.hostLocalMavenRepo>
|
||||
<preinstall.artifacts>${preinstall.artifacts}</preinstall.artifacts>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>native-40</id>
|
||||
<goals>
|
||||
<goal>integration-test</goal>
|
||||
<goal>verify</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<project.version>${project.version}</project.version>
|
||||
<mvnd.home>${mvnd.m40.home}</mvnd.home>
|
||||
<mvnd.home>${mvnd.home}</mvnd.home>
|
||||
<mrm.repository.url>${mrm.repository.url}</mrm.repository.url>
|
||||
<os.detected.name>${os.detected.name}</os.detected.name>
|
||||
<os.detected.arch>${os.detected.arch}</os.detected.arch>
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-logging</artifactId>
|
||||
@@ -76,7 +76,7 @@
|
||||
<artifactItem>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-slf4j-wrapper</artifactId>
|
||||
<version>${maven4.version}</version>
|
||||
<version>${maven.version}</version>
|
||||
<classifier>sources</classifier>
|
||||
</artifactItem>
|
||||
<artifactItem>
|
||||
|
@@ -29,11 +29,9 @@ import org.apache.maven.execution.ProjectExecutionEvent;
|
||||
import org.apache.maven.execution.ProjectExecutionListener;
|
||||
import org.apache.maven.lifecycle.LifecycleExecutionException;
|
||||
import org.apache.maven.lifecycle.internal.ReactorBuildStatus;
|
||||
import org.eclipse.sisu.Typed;
|
||||
|
||||
@Singleton
|
||||
@Named
|
||||
@Typed({LoggingExecutionListener.class, ExecutionListener.class, ProjectExecutionListener.class})
|
||||
public class LoggingExecutionListener implements ExecutionListener, ProjectExecutionListener {
|
||||
|
||||
private ExecutionListener delegate;
|
||||
|
@@ -20,7 +20,7 @@
|
||||
<parent>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mvnd-native</artifactId>
|
||||
|
53
pom.xml
53
pom.xml
@@ -29,7 +29,7 @@
|
||||
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd</artifactId>
|
||||
<version>1.0-m9-SNAPSHOT</version>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
|
||||
<packaging>pom</packaging>
|
||||
<name>Maven Daemon - Parent</name>
|
||||
@@ -52,10 +52,7 @@
|
||||
<module>client</module>
|
||||
<module>logging</module>
|
||||
<module>daemon</module>
|
||||
<module>daemon-m39</module>
|
||||
<module>daemon-m40</module>
|
||||
<module>dist-m39</module>
|
||||
<module>dist-m40</module>
|
||||
<module>dist</module>
|
||||
<module>integration-tests</module>
|
||||
</modules>
|
||||
|
||||
@@ -68,10 +65,9 @@
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven-dist.required.jdk>8</maven-dist.required.jdk>
|
||||
<project.build.outputTimestamp>2023-10-26T05:45:19Z</project.build.outputTimestamp>
|
||||
<maven.compiler.release>17</maven.compiler.release>
|
||||
<maven-dist.required.jdk>17</maven-dist.required.jdk>
|
||||
<project.build.outputTimestamp>2024-04-23T19:44:34Z</project.build.outputTimestamp>
|
||||
<trimStackTrace>false</trimStackTrace>
|
||||
<project.github.repository>apache/maven-mvnd</project.github.repository>
|
||||
<repository.url>github.com:${project.github.repository}</repository.url>
|
||||
@@ -88,8 +84,6 @@
|
||||
<jansi.version>2.4.1</jansi.version>
|
||||
<jline.version>3.25.1</jline.version>
|
||||
<maven.version>4.0.0-alpha-8</maven.version>
|
||||
<maven3.version>3.9.6</maven3.version>
|
||||
<maven4.version>${maven.version}</maven4.version>
|
||||
<!-- Keep in sync with Maven -->
|
||||
<maven.resolver.version>1.9.18</maven.resolver.version>
|
||||
<slf4j.version>1.7.36</slf4j.version>
|
||||
@@ -157,6 +151,11 @@
|
||||
<artifactId>maven-model</artifactId>
|
||||
<version>${maven.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-core</artifactId>
|
||||
<version>${maven.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-embedder</artifactId>
|
||||
@@ -241,13 +240,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-dist-m39</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-dist-m40</artifactId>
|
||||
<artifactId>mvnd-dist</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
</dependency>
|
||||
@@ -256,16 +249,6 @@
|
||||
<artifactId>mvnd-daemon</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-daemon-m39</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-daemon-m40</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.daemon</groupId>
|
||||
<artifactId>mvnd-helper-agent</artifactId>
|
||||
@@ -457,7 +440,7 @@
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>enforce-maven-3</id>
|
||||
<id>enforce-bytecode-version</id>
|
||||
<goals>
|
||||
<goal>enforce</goal>
|
||||
</goals>
|
||||
@@ -466,6 +449,18 @@
|
||||
<requireMavenVersion>
|
||||
<version>3.5.4</version>
|
||||
</requireMavenVersion>
|
||||
<requireJavaVersion>
|
||||
<version>[17,)</version>
|
||||
</requireJavaVersion>
|
||||
<enforceBytecodeVersion>
|
||||
<maxJdkVersion>${maven.compiler.release}</maxJdkVersion>
|
||||
<ignoredScopes>
|
||||
<ignoredScope>test</ignoredScope>
|
||||
</ignoredScopes>
|
||||
<excludes>
|
||||
<exclude>org.jline:jline</exclude>
|
||||
</excludes>
|
||||
</enforceBytecodeVersion>
|
||||
</rules>
|
||||
<fail>true</fail>
|
||||
</configuration>
|
||||
|
Reference in New Issue
Block a user