This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git
The following commit(s) were added to refs/heads/master by this push: new 0e057cb1 Make sure mvnd's plexus-interactivity is not in the maven classloader, fixes #807 0e057cb1 is described below commit 0e057cb12bcd9e34db4176fbfe16c96d4092d8f8 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Mon Mar 13 17:15:04 2023 +0100 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 --- .../org/mvndaemon/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 ++++++++++++++++++++++ .../logging/internal/MvndSlf4jConfiguration.java | 0 .../mvnd/logging/internal/SimpleAppender.java | 0 .../mvnd/logging/internal/Slf4jLogger.java | 0 .../mvnd/logging/internal/Slf4jLoggerManager.java | 0 .../mvnd/logging/smart/BuildEventListener.java | 0 .../logging/smart/LoggingExecutionListener.java | 0 .../mvnd/logging/smart/LoggingOutputStream.java | 0 .../logging/smart/ProjectBuildLogAppender.java | 0 pom.xml | 6 +++ 16 files changed, 83 insertions(+), 30 deletions(-) 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<Path> 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 @@ <groupId>org.apache.maven.daemon</groupId> <artifactId>mvnd-native</artifactId> </dependency> + <dependency> + <groupId>org.apache.maven.daemon</groupId> + <artifactId>mvnd-logging</artifactId> + </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-embedder</artifactId> @@ -105,29 +109,6 @@ </resource> </resources> <plugins> - <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <executions> - <execution> - <id>default-compile</id> - <goals> - <goal>compile</goal> - </goals> - </execution> - <execution> - <id>fallback</id> - <goals> - <goal>compile</goal> - </goals> - <configuration> - <release>${maven-dist.required.jdk}</release> - <compileSourceRoots> - <root>${project.basedir}/src/main/java-fallback</root> - </compileSourceRoots> - </configuration> - </execution> - </executions> - </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> 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 @@ </artifactSet> <artifactSet to="/mvn/lib"> + <artifact id="org.apache.maven.daemon:mvnd-logging:${project.version}"> + <exclusion id="*:*"/> + </artifact> <artifact id="ch.qos.logback:logback-classic"> <exclusion id="*:*"/> </artifact> @@ -36,7 +39,7 @@ </artifact> </artifactSet> - <artifactSet to="/mvn/lib/ext"> + <artifactSet to="/mvn/lib/mvnd"> <artifact id="io.takari.maven:takari-smart-builder:${takari-smart-builder.version}"> <exclusion id="*:*"/> </artifact> 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 @@ </artifactSet> <artifactSet to="/mvn/lib"> + <artifact id="org.apache.maven.daemon:mvnd-logging:${project.version}"> + <exclusion id="*:*"/> + </artifact> <artifact id="ch.qos.logback:logback-classic"> <exclusion id="*:*"/> </artifact> @@ -36,7 +39,7 @@ </artifact> </artifactSet> - <artifactSet to="/mvn/lib/ext"> + <artifactSet to="/mvn/lib/mvnd"> <artifact id="io.takari.maven:takari-smart-builder:${takari-smart-builder.version}"> <exclusion id="*:*"/> </artifact> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright 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.0-m5-SNAPSHOT</version> + </parent> + + <artifactId>mvnd-logging</artifactId> + + <packaging>jar</packaging> + <name>Maven Daemon - Logging</name> + + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-embedder</artifactId> + </dependency> + + <!-- Logging --> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>log4j-over-slf4j</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jul-to-slf4j</artifactId> + </dependency> + </dependencies> + +</project> 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 @@ <module>helper</module> <module>common</module> <module>client</module> + <module>logging</module> <module>daemon</module> <module>daemon-m39</module> <module>daemon-m40</module> @@ -240,6 +241,11 @@ <artifactId>mvnd-native</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.apache.maven.daemon</groupId> + <artifactId>mvnd-logging</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.apache.maven.daemon</groupId> <artifactId>mvnd-agent</artifactId>