From 0e057cb12bcd9e34db4176fbfe16c96d4092d8f8 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Mon, 13 Mar 2023 17:15:04 +0100 Subject: [PATCH] Make sure mvnd's plexus-interactivity is not in the maven classloader, fixes #807 * the logging framework is extracted into its own jar and moved in the mvn/lib/ directory * the other daemon jars are moved into the mvn/lib/mvnd directory and not used by maven at all This makes maven class loader almost identical to the stock maven classloader, but for the logging framework --- .../mvnd/client/DaemonConnector.java | 4 +- daemon/pom.xml | 27 ++------- dist-m39/src/main/provisio/maven-distro.xml | 5 +- dist-m40/src/main/provisio/maven-distro.xml | 5 +- dist/src/main/distro/bin/mvnd-client.conf | 7 ++- dist/src/main/distro/bin/mvnd-daemon.conf | 1 + logging/pom.xml | 58 +++++++++++++++++++ .../internal/MvndSlf4jConfiguration.java | 0 .../mvnd/logging/internal/SimpleAppender.java | 0 .../mvnd/logging/internal/Slf4jLogger.java | 0 .../logging/internal/Slf4jLoggerManager.java | 0 .../logging/smart/BuildEventListener.java | 0 .../smart/LoggingExecutionListener.java | 0 .../logging/smart/LoggingOutputStream.java | 0 .../smart/ProjectBuildLogAppender.java | 0 pom.xml | 6 ++ 16 files changed, 83 insertions(+), 30 deletions(-) create mode 100644 logging/pom.xml rename {daemon => logging}/src/main/java/org/mvndaemon/mvnd/logging/internal/MvndSlf4jConfiguration.java (100%) rename {daemon/src/main/java-fallback => logging/src/main/java}/org/mvndaemon/mvnd/logging/internal/SimpleAppender.java (100%) rename {daemon => logging}/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLogger.java (100%) rename {daemon => logging}/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLoggerManager.java (100%) rename {daemon => logging}/src/main/java/org/mvndaemon/mvnd/logging/smart/BuildEventListener.java (100%) rename {daemon => logging}/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingExecutionListener.java (100%) rename {daemon => logging}/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingOutputStream.java (100%) rename {daemon => logging}/src/main/java/org/mvndaemon/mvnd/logging/smart/ProjectBuildLogAppender.java (100%) diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java index 0f607659..537f0bbb 100644 --- a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java +++ b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java @@ -346,7 +346,7 @@ public class DaemonConnector { String mvndAgentPath = null; String plexusClassworldsPath = null; try (DirectoryStream jarPaths = Files.newDirectoryStream( - mvndHome.resolve("mvn").resolve("lib").resolve("ext"))) { + mvndHome.resolve("mvn").resolve("lib").resolve("mvnd"))) { for (Path jar : jarPaths) { String s = jar.getFileName().toString(); if (s.endsWith(".jar")) { @@ -368,7 +368,7 @@ public class DaemonConnector { } } if (mvndAgentPath == null) { - throw new IllegalStateException("Could not find mvnd-agent jar in mvn/lib/ext/"); + throw new IllegalStateException("Could not find mvnd-agent jar in mvn/lib/mvnd/"); } if (plexusClassworldsPath == null) { throw new IllegalStateException("Could not find plexus-classworlds jar in boot/"); diff --git a/daemon/pom.xml b/daemon/pom.xml index 3e1ffbd8..65ccf498 100644 --- a/daemon/pom.xml +++ b/daemon/pom.xml @@ -45,6 +45,10 @@ org.apache.maven.daemon mvnd-native + + org.apache.maven.daemon + mvnd-logging + org.apache.maven maven-embedder @@ -105,29 +109,6 @@ - - maven-compiler-plugin - - - default-compile - - compile - - - - fallback - - compile - - - ${maven-dist.required.jdk} - - ${project.basedir}/src/main/java-fallback - - - - - org.apache.maven.plugins maven-surefire-plugin diff --git a/dist-m39/src/main/provisio/maven-distro.xml b/dist-m39/src/main/provisio/maven-distro.xml index 3798b16f..5f4c1abd 100644 --- a/dist-m39/src/main/provisio/maven-distro.xml +++ b/dist-m39/src/main/provisio/maven-distro.xml @@ -25,6 +25,9 @@ + + + @@ -36,7 +39,7 @@ - + diff --git a/dist-m40/src/main/provisio/maven-distro.xml b/dist-m40/src/main/provisio/maven-distro.xml index 99673cac..c39075ef 100644 --- a/dist-m40/src/main/provisio/maven-distro.xml +++ b/dist-m40/src/main/provisio/maven-distro.xml @@ -25,6 +25,9 @@ + + + @@ -36,7 +39,7 @@ - + diff --git a/dist/src/main/distro/bin/mvnd-client.conf b/dist/src/main/distro/bin/mvnd-client.conf index 35244ace..a3ea1018 100644 --- a/dist/src/main/distro/bin/mvnd-client.conf +++ b/dist/src/main/distro/bin/mvnd-client.conf @@ -24,6 +24,7 @@ set logback.configurationFile default ${maven.conf}/logging/logback-client.xml set logback.configurationFile.fallback default ${maven.conf}/logging/logback.xml [plexus.core] -load ${maven.conf}/logging -load ${maven.home}/lib/ext/*.jar -load ${maven.home}/lib/*.jar +load ${maven.conf}/logging +load ${maven.home}/lib/mvnd/*.jar +optionally ${maven.home}/lib/ext/*.jar +load ${maven.home}/lib/*.jar diff --git a/dist/src/main/distro/bin/mvnd-daemon.conf b/dist/src/main/distro/bin/mvnd-daemon.conf index 4b32b4a2..6b2173a0 100644 --- a/dist/src/main/distro/bin/mvnd-daemon.conf +++ b/dist/src/main/distro/bin/mvnd-daemon.conf @@ -25,5 +25,6 @@ set logback.configurationFile.fallback default ${maven.conf}/logging/logback.xml [plexus.core] load ${maven.conf}/logging +load ${maven.home}/lib/mvnd/*.jar optionally ${maven.home}/lib/ext/*.jar load ${maven.home}/lib/*.jar diff --git a/logging/pom.xml b/logging/pom.xml new file mode 100644 index 00000000..8b1d5b9f --- /dev/null +++ b/logging/pom.xml @@ -0,0 +1,58 @@ + + + + + 4.0.0 + + org.apache.maven.daemon + mvnd + 1.0.0-m5-SNAPSHOT + + + mvnd-logging + + jar + Maven Daemon - Logging + + + + org.apache.maven + maven-embedder + + + + + ch.qos.logback + logback-classic + + + org.slf4j + log4j-over-slf4j + + + org.slf4j + jcl-over-slf4j + + + org.slf4j + jul-to-slf4j + + + + diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/logging/internal/MvndSlf4jConfiguration.java b/logging/src/main/java/org/mvndaemon/mvnd/logging/internal/MvndSlf4jConfiguration.java similarity index 100% rename from daemon/src/main/java/org/mvndaemon/mvnd/logging/internal/MvndSlf4jConfiguration.java rename to logging/src/main/java/org/mvndaemon/mvnd/logging/internal/MvndSlf4jConfiguration.java diff --git a/daemon/src/main/java-fallback/org/mvndaemon/mvnd/logging/internal/SimpleAppender.java b/logging/src/main/java/org/mvndaemon/mvnd/logging/internal/SimpleAppender.java similarity index 100% rename from daemon/src/main/java-fallback/org/mvndaemon/mvnd/logging/internal/SimpleAppender.java rename to logging/src/main/java/org/mvndaemon/mvnd/logging/internal/SimpleAppender.java diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLogger.java b/logging/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLogger.java similarity index 100% rename from daemon/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLogger.java rename to logging/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLogger.java diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLoggerManager.java b/logging/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLoggerManager.java similarity index 100% rename from daemon/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLoggerManager.java rename to logging/src/main/java/org/mvndaemon/mvnd/logging/internal/Slf4jLoggerManager.java diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/logging/smart/BuildEventListener.java b/logging/src/main/java/org/mvndaemon/mvnd/logging/smart/BuildEventListener.java similarity index 100% rename from daemon/src/main/java/org/mvndaemon/mvnd/logging/smart/BuildEventListener.java rename to logging/src/main/java/org/mvndaemon/mvnd/logging/smart/BuildEventListener.java diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingExecutionListener.java b/logging/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingExecutionListener.java similarity index 100% rename from daemon/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingExecutionListener.java rename to logging/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingExecutionListener.java diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingOutputStream.java b/logging/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingOutputStream.java similarity index 100% rename from daemon/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingOutputStream.java rename to logging/src/main/java/org/mvndaemon/mvnd/logging/smart/LoggingOutputStream.java diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/logging/smart/ProjectBuildLogAppender.java b/logging/src/main/java/org/mvndaemon/mvnd/logging/smart/ProjectBuildLogAppender.java similarity index 100% rename from daemon/src/main/java/org/mvndaemon/mvnd/logging/smart/ProjectBuildLogAppender.java rename to logging/src/main/java/org/mvndaemon/mvnd/logging/smart/ProjectBuildLogAppender.java diff --git a/pom.xml b/pom.xml index f9350625..42a357ee 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,7 @@ helper common client + logging daemon daemon-m39 daemon-m40 @@ -240,6 +241,11 @@ mvnd-native ${project.version} + + org.apache.maven.daemon + mvnd-logging + ${project.version} + org.apache.maven.daemon mvnd-agent