This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch maven-4.0.x
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/maven-4.0.x by this push:
new d2282909a1 Mimir 0.10.3 (#11291) (#11311)
d2282909a1 is described below
commit d2282909a19bc1478fea14ce90aa2ee8c01a2e00
Author: Tamas Cservenak <[email protected]>
AuthorDate: Tue Oct 21 14:53:00 2025 +0200
Mimir 0.10.3 (#11291) (#11311)
Changes:
* update to Mimir 0.10.3 (that allows combining cache-purge and pre-seed
features)
* uses pre-seed local reposes
* cache purge enabled on outer build
Bacport of 448a6d756351d2b567e498d4087b9637ea69cb0e
---
.github/ci-mimir-daemon.properties | 2 ++
.github/workflows/maven.yml | 11 ++++++++++-
.../org/apache/maven/cling/invoker/mvn/Environment.java | 2 --
.../apache/maven/cling/invoker/mvn/MavenInvokerTest.java | 4 ++--
.../maven/cling/invoker/mvn/MavenInvokerTestSupport.java | 3 ++-
.../src/main/java/org/apache/maven/api/cli/Executor.java | 2 +-
.../cling/executor/embedded/EmbeddedMavenExecutor.java | 2 +-
.../maven/cling/executor/forked/ForkedMavenExecutor.java | 16 ++++++++++++++++
.../org/apache/maven/cling/executor/Environment.java | 2 --
.../maven/cling/executor/MavenExecutorTestSupport.java | 6 ++++--
.../maven/cling/executor/impl/ToolboxToolTest.java | 5 +++--
.../src/main/java/org/apache/maven/it/Verifier.java | 2 +-
pom.xml | 6 ++----
13 files changed, 44 insertions(+), 19 deletions(-)
diff --git a/.github/ci-mimir-daemon.properties
b/.github/ci-mimir-daemon.properties
index 16c507a283..04b30055d3 100644
--- a/.github/ci-mimir-daemon.properties
+++ b/.github/ci-mimir-daemon.properties
@@ -19,3 +19,5 @@
# Pre-seed itself
mimir.daemon.preSeedItself=true
+mimir.file.exclusiveAccess=true
+mimir.file.cachePurge=ON_BEGIN
\ No newline at end of file
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index a0e1540072..75b25a612d 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -32,7 +32,7 @@ concurrency:
permissions: {}
env:
- MIMIR_VERSION: 0.10.0
+ MIMIR_VERSION: 0.10.3
MIMIR_BASEDIR: ~/.mimir
MIMIR_LOCAL: ~/.mimir/local
@@ -100,6 +100,15 @@ jobs:
apache-maven/target/apache-maven*.zip
apache-maven/target/apache-maven*.tar.gz
+ - name: Upload test artifacts
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
# v4
+ if: failure() || cancelled()
+ with:
+ name: ${{ github.run_number }}-initial
+ path: |
+ **/target/surefire-reports/*
+ **/target/java_heapdump.hprof
+
full-build:
needs: initial-build
runs-on: ${{ matrix.os }}
diff --git
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/Environment.java
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/Environment.java
index b004cf2d97..e0c23fcbca 100644
---
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/Environment.java
+++
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/Environment.java
@@ -22,6 +22,4 @@ public final class Environment {
private Environment() {}
public static final String TOOLBOX_VERSION =
System.getProperty("version.toolbox", "UNSET version.toolbox");
-
- public static final String MIMIR_VERSION =
System.getProperty("version.mimir", "UNSET version.mimir");
}
diff --git
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTest.java
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTest.java
index f169d3007b..b1115a4dce 100644
---
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTest.java
+++
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTest.java
@@ -222,10 +222,10 @@ void conflictingSettings(
Map<String, String> logs = invoke(
cwd,
userHome,
- List.of("eu.maveniverse.maven.plugins:toolbox:" +
Environment.TOOLBOX_VERSION + ":help"),
+ List.of("eu.maveniverse.maven.plugins:toolbox:" +
Environment.TOOLBOX_VERSION + ":dump"),
List.of("--force-interactive"));
- String log = logs.get("eu.maveniverse.maven.plugins:toolbox:" +
Environment.TOOLBOX_VERSION + ":help");
+ String log = logs.get("eu.maveniverse.maven.plugins:toolbox:" +
Environment.TOOLBOX_VERSION + ":dump");
assertTrue(log.contains("https://repo1.maven.org/maven2"), log);
assertFalse(log.contains("https://repo.maven.apache.org/maven2"), log);
}
diff --git
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTestSupport.java
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTestSupport.java
index f299b4b748..91a69729b0 100644
---
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTestSupport.java
+++
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTestSupport.java
@@ -99,7 +99,8 @@ protected Map<String, String> invoke(Path cwd, Path userHome,
Collection<String>
Files.writeString(appJava, APP_JAVA_STRING);
if (MimirInfuser.isMimirPresentUW()) {
- MimirInfuser.doInfuseUW(Environment.MIMIR_VERSION, userHome);
+ MimirInfuser.doInfuseUW(userHome);
+ MimirInfuser.preseedItselfIntoInnerUserHome(userHome);
}
HashMap<String, String> logs = new HashMap<>();
diff --git
a/impl/maven-executor/src/main/java/org/apache/maven/api/cli/Executor.java
b/impl/maven-executor/src/main/java/org/apache/maven/api/cli/Executor.java
index 995e43018f..90c439195d 100644
--- a/impl/maven-executor/src/main/java/org/apache/maven/api/cli/Executor.java
+++ b/impl/maven-executor/src/main/java/org/apache/maven/api/cli/Executor.java
@@ -71,5 +71,5 @@ public interface Executor extends AutoCloseable {
* @throws ExecutorException if an error occurs while closing the {@link
Executor}
*/
@Override
- default void close() throws ExecutorException {}
+ void close() throws ExecutorException;
}
diff --git
a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/embedded/EmbeddedMavenExecutor.java
b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/embedded/EmbeddedMavenExecutor.java
index fff8226bea..e5eda275d5 100644
---
a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/embedded/EmbeddedMavenExecutor.java
+++
b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/embedded/EmbeddedMavenExecutor.java
@@ -183,10 +183,10 @@ protected void disposeRuntimeCreatedRealms(Context
context) {
@Override
public String mavenVersion(ExecutorRequest executorRequest) throws
ExecutorException {
requireNonNull(executorRequest);
- validate(executorRequest);
if (closed.get()) {
throw new ExecutorException("Executor is closed");
}
+ validate(executorRequest);
return mayCreate(executorRequest).version;
}
diff --git
a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/forked/ForkedMavenExecutor.java
b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/forked/ForkedMavenExecutor.java
index eaeddd8ec4..a559a24baf 100644
---
a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/forked/ForkedMavenExecutor.java
+++
b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/forked/ForkedMavenExecutor.java
@@ -31,6 +31,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.maven.api.cli.Executor;
import org.apache.maven.api.cli.ExecutorException;
@@ -45,6 +46,7 @@
*/
public class ForkedMavenExecutor implements Executor {
protected final boolean useMavenArgsEnv;
+ protected final AtomicBoolean closed;
public ForkedMavenExecutor() {
this(true);
@@ -52,11 +54,15 @@ public ForkedMavenExecutor() {
public ForkedMavenExecutor(boolean useMavenArgsEnv) {
this.useMavenArgsEnv = useMavenArgsEnv;
+ this.closed = new AtomicBoolean(false);
}
@Override
public int execute(ExecutorRequest executorRequest) throws
ExecutorException {
requireNonNull(executorRequest);
+ if (closed.get()) {
+ throw new ExecutorException("Executor is closed");
+ }
validate(executorRequest);
return doExecute(executorRequest);
@@ -65,6 +71,9 @@ public int execute(ExecutorRequest executorRequest) throws
ExecutorException {
@Override
public String mavenVersion(ExecutorRequest executorRequest) throws
ExecutorException {
requireNonNull(executorRequest);
+ if (closed.get()) {
+ throw new ExecutorException("Executor is closed");
+ }
validate(executorRequest);
try {
Path cwd =
Files.createTempDirectory("forked-executor-maven-version");
@@ -207,4 +216,11 @@ protected CountDownLatch pump(Process p, ExecutorRequest
executorRequest) {
stdinPump.start();
return latch;
}
+
+ @Override
+ public void close() throws ExecutorException {
+ if (closed.compareAndExchange(false, true)) {
+ // nothing yet
+ }
+ }
}
diff --git
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/Environment.java
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/Environment.java
index 0345cfdc77..771661a435 100644
---
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/Environment.java
+++
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/Environment.java
@@ -22,6 +22,4 @@ public final class Environment {
private Environment() {}
public static final String TOOLBOX_VERSION =
System.getProperty("version.toolbox", "UNSET version.toolbox");
-
- public static final String MIMIR_VERSION =
System.getProperty("version.mimir", "UNSET version.mimir");
}
diff --git
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/MavenExecutorTestSupport.java
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/MavenExecutorTestSupport.java
index b5aecc4fc9..b322f23f46 100644
---
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/MavenExecutorTestSupport.java
+++
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/MavenExecutorTestSupport.java
@@ -61,6 +61,7 @@ void beforeEach(TestInfo testInfo) throws Exception {
.resolve("home");
Files.createDirectories(userHome);
MimirInfuser.infuseUW(userHome);
+ MimirInfuser.preseedItselfIntoInnerUserHome(userHome);
System.out.println("=== " +
testInfo.getTestMethod().orElseThrow().getName());
}
@@ -338,10 +339,11 @@ protected void execute(@Nullable Path logFile,
Collection<ExecutorRequest> reque
for (ExecutorRequest request : requests) {
if (MimirInfuser.isMimirPresentUW()) {
if (maven3Home().equals(request.installationDirectory())) {
- MimirInfuser.doInfusePW(Environment.MIMIR_VERSION,
request.cwd(), request.userHomeDirectory());
+ MimirInfuser.doInfusePW(request.cwd(),
request.userHomeDirectory());
} else if
(maven4Home().equals(request.installationDirectory())) {
- MimirInfuser.doInfuseUW(Environment.MIMIR_VERSION,
request.userHomeDirectory());
+ MimirInfuser.doInfuseUW(request.userHomeDirectory());
}
+
MimirInfuser.preseedItselfIntoInnerUserHome(request.userHomeDirectory());
}
int exitCode = invoker.execute(request);
if (exitCode != 0) {
diff --git
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
index 7bc6c1ea05..79d1745c3b 100644
---
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
+++
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
@@ -64,10 +64,11 @@ void beforeEach(TestInfo testInfo) throws Exception {
if (MimirInfuser.isMimirPresentUW()) {
if (testName.contains("3")) {
- MimirInfuser.doInfusePW(Environment.MIMIR_VERSION, cwd,
userHome);
+ MimirInfuser.doInfusePW(cwd, userHome);
} else {
- MimirInfuser.doInfuseUW(Environment.MIMIR_VERSION, userHome);
+ MimirInfuser.doInfuseUW(userHome);
}
+ MimirInfuser.preseedItselfIntoInnerUserHome(userHome);
}
System.out.println("=== " +
testInfo.getTestMethod().orElseThrow().getName());
diff --git
a/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
b/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
index 9ce5f12968..e4ebe69ac2 100644
---
a/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
+++
b/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
@@ -109,7 +109,7 @@ public class Verifier {
private final List<String> jvmArguments = new ArrayList<>();
// TestSuiteOrdering creates Verifier in non-forked JVM as well, and there
no prop set is set (so use default)
- private final String toolboxVersion =
System.getProperty("version.toolbox", "0.14.0");
+ private final String toolboxVersion =
System.getProperty("version.toolbox", "0.14.1");
private Path userHomeDirectory; // the user home
diff --git a/pom.xml b/pom.xml
index 5f5d70dfa0..2c7da555f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -177,7 +177,7 @@ under the License.
<version.palantirJavaFormat>2.80.0</version.palantirJavaFormat>
<!-- Set as system property in surefire/failsafe to propagate to tests and
IT Verifier -->
- <toolboxVersion>0.14.0</toolboxVersion>
+ <toolboxVersion>0.14.1</toolboxVersion>
</properties>
<!--bootstrap-start-comment-->
@@ -693,7 +693,7 @@ under the License.
<dependency>
<groupId>eu.maveniverse.maven.mimir</groupId>
<artifactId>testing</artifactId>
- <version>0.10.0</version>
+ <version>0.10.3</version>
</dependency>
</dependencies>
<!--bootstrap-start-comment-->
@@ -725,7 +725,6 @@ under the License.
<argLine>-Xmx256m @{jacocoArgLine}</argLine>
<systemPropertyVariables combine.children="append">
<version.toolbox>${toolboxVersion}</version.toolbox>
- <version.mimir>${env.MIMIR_VERSION}</version.mimir>
</systemPropertyVariables>
</configuration>
</plugin>
@@ -737,7 +736,6 @@ under the License.
<argLine>-Xmx256m @{jacocoArgLine}</argLine>
<systemPropertyVariables combine.children="append">
<version.toolbox>${toolboxVersion}</version.toolbox>
- <version.mimir>${env.MIMIR_VERSION}</version.mimir>
</systemPropertyVariables>
</configuration>
</plugin>