From d9105967b876e571510b477f1d968702561d222c Mon Sep 17 00:00:00 2001 From: lprimak Date: Sat, 7 Sep 2024 17:31:57 -0500 Subject: [PATCH 1/9] compiles --- bom/pom.xml | 2 +- maven/api-maven-embedded/pom.xml | 2 +- maven/impl-maven-embedded/pom.xml | 2 +- maven/impl-maven/pom.xml | 2 + .../maven/logging/AetherLoggerFactory.java | 76 ------------------- maven/maven-plugin/pom.xml | 1 + pom.xml | 15 +++- 7 files changed, 17 insertions(+), 83 deletions(-) delete mode 100644 maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/logging/AetherLoggerFactory.java diff --git a/bom/pom.xml b/bom/pom.xml index 3a8cb791d..ca301c671 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -46,7 +46,7 @@ https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/ https://repository.jboss.org/nexus/content/repositories/snapshots/ - 3.9.8 + 4.0.0-beta-4 diff --git a/maven/api-maven-embedded/pom.xml b/maven/api-maven-embedded/pom.xml index e7d37d2c2..1d52eb9da 100644 --- a/maven/api-maven-embedded/pom.xml +++ b/maven/api-maven-embedded/pom.xml @@ -39,7 +39,7 @@ org.apache.maven.shared maven-invoker - ${version.org.apache.maven-invoker} + 3.3.0 diff --git a/maven/impl-maven-embedded/pom.xml b/maven/impl-maven-embedded/pom.xml index ba93ccfb7..8357fdc44 100644 --- a/maven/impl-maven-embedded/pom.xml +++ b/maven/impl-maven-embedded/pom.xml @@ -31,7 +31,7 @@ org.apache.maven.shared maven-invoker - ${version.org.apache.maven-invoker} + 3.3.0 commons-codec diff --git a/maven/impl-maven/pom.xml b/maven/impl-maven/pom.xml index dfef38224..6fbb668a9 100644 --- a/maven/impl-maven/pom.xml +++ b/maven/impl-maven/pom.xml @@ -101,6 +101,7 @@ com.google.guava failureaccess + 1.0.2 @@ -157,6 +158,7 @@ org.apache.maven.resolver maven-resolver-transport-http + 1.9.22 diff --git a/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/logging/AetherLoggerFactory.java b/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/logging/AetherLoggerFactory.java deleted file mode 100644 index c1bd8fc3e..000000000 --- a/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/logging/AetherLoggerFactory.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2014, Red Hat Middleware LLC, and individual contributors - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * 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. - */ -package org.jboss.shrinkwrap.resolver.impl.maven.logging; - -import java.util.logging.Level; - -import org.eclipse.aether.spi.log.LoggerFactory; - -/** - * A delegating logging factory, that uses Java Util Logging to log messages from Aether. It logs debug output using FINE level, - * whereas WARNING level is used for warning output. - * - * @author Karel Piwko - * - */ -public class AetherLoggerFactory implements LoggerFactory { - - @Override - public org.eclipse.aether.spi.log.Logger getLogger(String name) { - return new Logger(java.util.logging.Logger.getLogger(name)); - } - - public static class Logger implements org.eclipse.aether.spi.log.Logger { - - private final java.util.logging.Logger log; - - public Logger(java.util.logging.Logger logger) { - this.log = logger; - } - - @Override - public boolean isDebugEnabled() { - return log.isLoggable(Level.FINE); - } - - @Override - public void debug(String msg) { - log.log(Level.FINE, msg); - } - - @Override - public void debug(String msg, Throwable error) { - log.log(Level.FINE, msg, error); - } - - @Override - public boolean isWarnEnabled() { - return log.isLoggable(Level.WARNING); - } - - @Override - public void warn(String msg) { - log.log(Level.WARNING, msg); - } - - @Override - public void warn(String msg, Throwable error) { - log.log(Level.WARNING, msg, error); - } - } - -} diff --git a/maven/maven-plugin/pom.xml b/maven/maven-plugin/pom.xml index b2fb0dc5d..4e379e592 100644 --- a/maven/maven-plugin/pom.xml +++ b/maven/maven-plugin/pom.xml @@ -93,6 +93,7 @@ org.apache.maven.plugins maven-plugin-plugin + 4.0.0-beta-1 shrinkwrap-resolver true diff --git a/pom.xml b/pom.xml index f8eb62be4..a45ed0226 100644 --- a/pom.xml +++ b/pom.xml @@ -34,10 +34,10 @@ 1.17.1 1.27.0 2.16.1 - 2.4.15 - 3.9.8 + 2.4.20 + 4.0.0-beta-4 3.13.1 - 3.0.1 + 3.3.0 2.8.0 2.7 2.2.0 @@ -47,7 +47,7 @@ 1.2.6 - 3.7.0 + 3.8.0 3.3.1 3.6.0 3.12.1 @@ -125,6 +125,13 @@ import pom + + org.slf4j + slf4j-bom + 2.0.16 + import + pom + org.jboss.shrinkwrap shrinkwrap-bom From 5240f4242eb9c43e4711789ae04e0fbe6a169469 Mon Sep 17 00:00:00 2001 From: lprimak Date: Sat, 7 Sep 2024 19:55:37 -0500 Subject: [PATCH 2/9] working version (mostly) --- maven/impl-maven/pom.xml | 15 +++++++++++++++ pom.xml | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/maven/impl-maven/pom.xml b/maven/impl-maven/pom.xml index 6fbb668a9..a70d944f7 100644 --- a/maven/impl-maven/pom.xml +++ b/maven/impl-maven/pom.xml @@ -43,6 +43,11 @@ + + org.apache.maven.resolver + maven-resolver-supplier-mvn4 + 2.0.1 + eu.maveniverse.maven.mima context @@ -59,6 +64,16 @@ standalone-static ${version.eu.maveniverse.mima} runtime + + + org.apache.maven.resolver + maven-resolver-supplier + + + org.apache.maven.resolver + maven-resolver-supplier-mvn4 + + diff --git a/pom.xml b/pom.xml index a45ed0226..abf2586c1 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 1.17.1 1.27.0 2.16.1 - 2.4.20 + 3.0.0-SNAPSHOT 4.0.0-beta-4 3.13.1 3.3.0 From 3b86fbb7430079e35e431c742f5b3de535ce5596 Mon Sep 17 00:00:00 2001 From: lprimak Date: Sat, 7 Sep 2024 21:44:41 -0500 Subject: [PATCH 3/9] removed unneeded changes --- maven/api-maven-embedded/pom.xml | 2 +- maven/impl-maven-embedded/pom.xml | 2 +- maven/impl-maven/pom.xml | 15 --------------- pom.xml | 5 +++++ 4 files changed, 7 insertions(+), 17 deletions(-) diff --git a/maven/api-maven-embedded/pom.xml b/maven/api-maven-embedded/pom.xml index 1d52eb9da..e7d37d2c2 100644 --- a/maven/api-maven-embedded/pom.xml +++ b/maven/api-maven-embedded/pom.xml @@ -39,7 +39,7 @@ org.apache.maven.shared maven-invoker - 3.3.0 + ${version.org.apache.maven-invoker} diff --git a/maven/impl-maven-embedded/pom.xml b/maven/impl-maven-embedded/pom.xml index 8357fdc44..ba93ccfb7 100644 --- a/maven/impl-maven-embedded/pom.xml +++ b/maven/impl-maven-embedded/pom.xml @@ -31,7 +31,7 @@ org.apache.maven.shared maven-invoker - 3.3.0 + ${version.org.apache.maven-invoker} commons-codec diff --git a/maven/impl-maven/pom.xml b/maven/impl-maven/pom.xml index a70d944f7..6fbb668a9 100644 --- a/maven/impl-maven/pom.xml +++ b/maven/impl-maven/pom.xml @@ -43,11 +43,6 @@ - - org.apache.maven.resolver - maven-resolver-supplier-mvn4 - 2.0.1 - eu.maveniverse.maven.mima context @@ -64,16 +59,6 @@ standalone-static ${version.eu.maveniverse.mima} runtime - - - org.apache.maven.resolver - maven-resolver-supplier - - - org.apache.maven.resolver - maven-resolver-supplier-mvn4 - - diff --git a/pom.xml b/pom.xml index abf2586c1..43d53164d 100644 --- a/pom.xml +++ b/pom.xml @@ -125,6 +125,11 @@ import pom + + org.apache.maven.resolver + maven-resolver-supplier-mvn4 + 2.0.1 + org.slf4j slf4j-bom From cf760e9895a7a5a401cb72ff9dece434676ec67b Mon Sep 17 00:00:00 2001 From: lprimak Date: Sat, 7 Sep 2024 23:07:18 -0500 Subject: [PATCH 4/9] updated jboss parent --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 43d53164d..e1f7fb8cc 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.jboss jboss-parent - 39 + 46 From 0d5e34e5ada771edcc436ea51dcb7839b3483d9c Mon Sep 17 00:00:00 2001 From: lprimak Date: Sun, 8 Sep 2024 19:29:39 -0500 Subject: [PATCH 5/9] downgrade guice to 6 (sisu compat), update plexus-compiler to latest --- maven/impl-maven-archive/pom.xml | 9 +++++---- .../packaging/AbstractCompilingProcessor.java | 9 ++++++++- .../CompilerPluginConfigurationTestCase.java | 6 +++--- .../plugins/JarPluginConfigurationTestCase.java | 2 +- maven/impl-maven/pom.xml | 14 +++++--------- pom.xml | 12 ++++++++---- 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/maven/impl-maven-archive/pom.xml b/maven/impl-maven-archive/pom.xml index d79619d1e..ea52bab52 100644 --- a/maven/impl-maven-archive/pom.xml +++ b/maven/impl-maven-archive/pom.xml @@ -58,16 +58,17 @@ org.codehaus.plexus plexus-classworlds - - org.codehaus.plexus - plexus-component-annotations - javax.enterprise cdi-api + + com.google.inject + guice + ${version.com.google.guice} + diff --git a/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java b/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java index 923d800dc..a9a3d2193 100644 --- a/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java +++ b/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java @@ -22,11 +22,15 @@ import java.util.logging.Logger; import java.util.regex.Pattern; +import com.google.inject.Guice; import org.codehaus.plexus.compiler.CompilerConfiguration; import org.codehaus.plexus.compiler.CompilerException; import org.codehaus.plexus.compiler.CompilerMessage; import org.codehaus.plexus.compiler.CompilerResult; import org.codehaus.plexus.compiler.javac.JavacCompiler; +import org.eclipse.sisu.space.SpaceModule; +import org.eclipse.sisu.space.URLClassSpace; +import org.eclipse.sisu.wire.WireModule; import org.jboss.shrinkwrap.api.Archive; import org.jboss.shrinkwrap.resolver.api.maven.MavenResolvedArtifact; import org.jboss.shrinkwrap.resolver.api.maven.MavenWorkingSession; @@ -38,6 +42,7 @@ import org.jboss.shrinkwrap.resolver.impl.maven.task.AddScopedDependenciesTask; import org.jboss.shrinkwrap.resolver.impl.maven.util.Validate; import org.jboss.shrinkwrap.resolver.spi.maven.archive.packaging.PackagingProcessor; +import static org.eclipse.sisu.space.SpaceModule.LOCAL_INDEX; /** * Packaging processor which is able to compile Java sources @@ -52,6 +57,9 @@ public abstract class AbstractCompilingProcessor compile(File inputDirectory, F Validate.notNull(inputDirectory, "Directory with sources to be compiled must not be null"); Validate.notNull(outputDirectory, "Target directory for compiled sources must not be null"); - JavacCompiler compiler = new JavacCompiler(); CompilerConfiguration configuration = getCompilerConfiguration(); if (log.isLoggable(Level.FINE)) { diff --git a/maven/impl-maven-archive/src/test/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/plugins/CompilerPluginConfigurationTestCase.java b/maven/impl-maven-archive/src/test/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/plugins/CompilerPluginConfigurationTestCase.java index 961dfac07..52c231363 100644 --- a/maven/impl-maven-archive/src/test/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/plugins/CompilerPluginConfigurationTestCase.java +++ b/maven/impl-maven-archive/src/test/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/plugins/CompilerPluginConfigurationTestCase.java @@ -44,7 +44,7 @@ public void additionalCompilerArgs() { CompilerPluginConfiguration configuration = new CompilerPluginConfiguration(session.getParsedPomFile()); CompilerConfiguration compilerConf = configuration.asCompilerConfiguration(); compilerConf.setOutputLocation("target"); - String[] args = JavacCompiler.buildCompilerArguments(compilerConf, new String[0]); + String[] args = JavacCompiler.buildCompilerArguments(compilerConf, new String[0], compilerConf.getSourceVersion()); assertThat(Arrays.asList(args), hasItems("-verbose", "-Xlint:unchecked", "-Xlint:cast", "-source", "1.7")); @@ -59,7 +59,7 @@ public void compilerEncoding() { CompilerPluginConfiguration configuration = new CompilerPluginConfiguration(session.getParsedPomFile()); CompilerConfiguration compilerConf = configuration.asCompilerConfiguration(); compilerConf.setOutputLocation("target"); - String[] args = JavacCompiler.buildCompilerArguments(compilerConf, new String[0]); + String[] args = JavacCompiler.buildCompilerArguments(compilerConf, new String[0], compilerConf.getSourceVersion()); assertThat(Arrays.asList(args), hasItems("-verbose", "-Xlint:unchecked", "-Xlint:cast", "-source", "1.7", "-encoding", "ISO-8859-2")); @@ -74,7 +74,7 @@ public void compilerEncodingFromProperty() { CompilerPluginConfiguration configuration = new CompilerPluginConfiguration(session.getParsedPomFile()); CompilerConfiguration compilerConf = configuration.asCompilerConfiguration(); compilerConf.setOutputLocation("target"); - String[] args = JavacCompiler.buildCompilerArguments(compilerConf, new String[0]); + String[] args = JavacCompiler.buildCompilerArguments(compilerConf, new String[0], compilerConf.getSourceVersion()); assertThat(Arrays.asList(args), hasItems("-verbose", "-Xlint:unchecked", "-Xlint:cast", "-source", "1.7", "-encoding", "ISO-8859-2")); diff --git a/maven/impl-maven-archive/src/test/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/plugins/JarPluginConfigurationTestCase.java b/maven/impl-maven-archive/src/test/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/plugins/JarPluginConfigurationTestCase.java index 5bd67c9cf..332768236 100644 --- a/maven/impl-maven-archive/src/test/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/plugins/JarPluginConfigurationTestCase.java +++ b/maven/impl-maven-archive/src/test/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/plugins/JarPluginConfigurationTestCase.java @@ -40,7 +40,7 @@ public void additionalCompilerArguments() { CompilerPluginConfiguration configuration = new CompilerPluginConfiguration(session.getParsedPomFile()); CompilerConfiguration compilerConf = configuration.asCompilerConfiguration(); compilerConf.setOutputLocation("target"); - String[] args = JavacCompiler.buildCompilerArguments(compilerConf, new String[0]); + String[] args = JavacCompiler.buildCompilerArguments(compilerConf, new String[0], compilerConf.getSourceVersion()); diff --git a/maven/impl-maven/pom.xml b/maven/impl-maven/pom.xml index 6fbb668a9..1554f8a10 100644 --- a/maven/impl-maven/pom.xml +++ b/maven/impl-maven/pom.xml @@ -67,26 +67,22 @@ plexus-classworlds ${version.org.codehaus.plexus-classworlds} - - org.codehaus.plexus - plexus-component-annotations - ${version.org.codehaus.plexus-component-annotations} - org.eclipse.sisu org.eclipse.sisu.plexus ${version.org.eclipse.plexus} - - org.codehaus.plexus - plexus-component-annotations - org.codehaus.plexus plexus-classworlds + + org.eclipse.sisu + org.eclipse.sisu.inject + ${version.org.eclipse.plexus} + com.google.inject diff --git a/pom.xml b/pom.xml index e1f7fb8cc..3b19552e3 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ 1.8 - 7.0.0 + 6.0.0 1.17.1 1.27.0 2.16.1 @@ -39,10 +39,9 @@ 3.13.1 3.3.0 2.8.0 - 2.7 - 2.2.0 + 2.15.0 2.0 - 0.3.5 + 0.9.0.M3 8.10 1.2.6 @@ -149,6 +148,11 @@ commons-codec ${version.commons-codec} + + com.google.inject + guice + ${version.com.google.guice} + commons-io commons-io From 3fd4d749411d50e74a1af7db0f6f928d6a316e91 Mon Sep 17 00:00:00 2001 From: lprimak Date: Sun, 8 Sep 2024 20:23:27 -0500 Subject: [PATCH 6/9] enh: skip compilation via org.jboss.shrinkwrap.resolver.maven.skipCompilation system property --- .../maven/archive/packaging/AbstractCompilingProcessor.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java b/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java index a9a3d2193..f9cfc6439 100644 --- a/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java +++ b/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java @@ -69,7 +69,10 @@ protected PackagingProcessor configure(MavenWorkingSession session) } protected AbstractCompilingProcessor compile(File inputDirectory, File outputDirectory, ScopeType... scopes) { - + if (Boolean.getBoolean("org.jboss.shrinkwrap.resolver.maven.skipCompilation")) { + log.fine("Compilation was skipped due to system property org.jboss.shrinkwrap.resolver.maven.importer.skipCompilation being set to true"); + return this; + } Validate.notNullAndNoNullValues(scopes, "Cannot compile sources, there were no scopes defined"); Validate.notNull(inputDirectory, "Directory with sources to be compiled must not be null"); Validate.notNull(outputDirectory, "Target directory for compiled sources must not be null"); From a29b2bbcbca836b5c29f8eaf4b5f59b4ed75fde9 Mon Sep 17 00:00:00 2001 From: lprimak Date: Sun, 8 Sep 2024 20:32:46 -0500 Subject: [PATCH 7/9] enh: better skipping compilation implementation --- .../packaging/AbstractCompilingProcessor.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java b/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java index f9cfc6439..31602c181 100644 --- a/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java +++ b/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java @@ -57,22 +57,32 @@ public abstract class AbstractCompilingProcessor configure(MavenWorkingSession session) { this.session = session; return this; } protected AbstractCompilingProcessor compile(File inputDirectory, File outputDirectory, ScopeType... scopes) { - if (Boolean.getBoolean("org.jboss.shrinkwrap.resolver.maven.skipCompilation")) { - log.fine("Compilation was skipped due to system property org.jboss.shrinkwrap.resolver.maven.importer.skipCompilation being set to true"); - return this; - } Validate.notNullAndNoNullValues(scopes, "Cannot compile sources, there were no scopes defined"); Validate.notNull(inputDirectory, "Directory with sources to be compiled must not be null"); Validate.notNull(outputDirectory, "Target directory for compiled sources must not be null"); From 59d10b2bb6331cb5405917602cf5a022572ac654 Mon Sep 17 00:00:00 2001 From: lprimak Date: Sun, 8 Sep 2024 20:41:42 -0500 Subject: [PATCH 8/9] enh(compilation-skip): performance imrprovement --- .../archive/packaging/AbstractCompilingProcessor.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java b/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java index 31602c181..dfc2a1d93 100644 --- a/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java +++ b/maven/impl-maven-archive/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/archive/packaging/AbstractCompilingProcessor.java @@ -65,6 +65,11 @@ public AbstractCompilingProcessor() { if (Boolean.getBoolean("org.jboss.shrinkwrap.resolver.maven.skipCompilation")) { log.fine("Compilation was skipped due to system property org.jboss.shrinkwrap.resolver.maven.importer.skipCompilation being set to true"); compiler = new JavacCompiler() { + @Override + public String getCompilerId() { + return ""; + } + @Override public CompilerResult performCompile(CompilerConfiguration configuration) throws CompilerException { return new CompilerResult(); @@ -87,6 +92,11 @@ protected AbstractCompilingProcessor compile(File inputDirectory, F Validate.notNull(inputDirectory, "Directory with sources to be compiled must not be null"); Validate.notNull(outputDirectory, "Target directory for compiled sources must not be null"); + if ("".equals(compiler.getCompilerId())) { + log.warning("No compiler found, skipping compilation"); + return this; + } + CompilerConfiguration configuration = getCompilerConfiguration(); if (log.isLoggable(Level.FINE)) { From 862d280f9d3dd74d734f41174d484d72b47ac18c Mon Sep 17 00:00:00 2001 From: lprimak Date: Mon, 9 Sep 2024 18:32:29 -0500 Subject: [PATCH 9/9] enh: adding maven 4 project-local dependency resolution --- .../impl/maven/MavenWorkingSessionImpl.java | 92 ++++++++++++++++++- 1 file changed, 90 insertions(+), 2 deletions(-) diff --git a/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/MavenWorkingSessionImpl.java b/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/MavenWorkingSessionImpl.java index 1723ec26d..bc4522cd2 100644 --- a/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/MavenWorkingSessionImpl.java +++ b/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/MavenWorkingSessionImpl.java @@ -21,16 +21,21 @@ import eu.maveniverse.maven.mima.context.Runtime; import eu.maveniverse.maven.mima.context.Runtimes; import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.Properties; import java.util.Set; +import java.util.function.Predicate; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Collectors; import org.apache.maven.model.Model; import org.apache.maven.model.Profile; @@ -42,12 +47,16 @@ import org.apache.maven.model.building.ModelBuildingResult; import org.apache.maven.model.building.ModelProblem; import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.collection.CollectRequest; import org.eclipse.aether.collection.DependencyCollectionException; import org.eclipse.aether.collection.DependencySelector; +import org.eclipse.aether.graph.DefaultDependencyNode; +import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.repository.RemoteRepository.Builder; import org.eclipse.aether.repository.RepositoryPolicy; +import org.eclipse.aether.resolution.ArtifactRequest; import org.eclipse.aether.resolution.ArtifactResolutionException; import org.eclipse.aether.resolution.ArtifactResult; import org.eclipse.aether.resolution.DependencyResolutionException; @@ -188,6 +197,76 @@ public MavenWorkingSession loadPomFromFile(File pomFile, Properties userProperti return this; } + private Collection resolveProjectLocal(final List depsForResolution, + Set additionalDependencies) { + Collection projectLocalDependencies = new ArrayList<>(depsForResolution.size()); + for (MavenDependency dependency : depsForResolution) { + Path resolved = resolveProjectLocal(dependency.getGroupId(), dependency.getArtifactId(), + dependency.getVersion(), Optional.ofNullable(dependency.getClassifier()), + Optional.ofNullable(dependency.getPackaging().getExtension()), additionalDependencies); + if (resolved != null && resolved.toFile().exists()) { + Artifact artifact = new DefaultArtifact(dependency.getGroupId(), dependency.getArtifactId(), + dependency.getClassifier(), dependency.getPackaging().getExtension(), dependency.getVersion(), + null, resolved); + ArtifactResult result = new ArtifactResult(new ArtifactRequest() + .setDependencyNode(new DefaultDependencyNode( + new Dependency(artifact, dependency.getScope().name(), dependency.isOptional())))); + result.setArtifact(artifact); + projectLocalDependencies.add(result); + } + } + return projectLocalDependencies; + } + + private Path resolveProjectLocal(String groupId, String artifactId, String version, + Optional classifier, Optional extension, + Set additionalDependencies) { + Path findProjectLocalRepository = findProjectLocalRepository(); + if (findProjectLocalRepository == null) { + return null; + } + + Predicate isNotEmpty = s -> !s.isEmpty(); + Path directory = findProjectLocalRepository.resolve(groupId).resolve(artifactId).resolve(version); + String versionedArtifact = artifactId + "-" + version; + File consumerPom = directory.resolve(versionedArtifact + "-consumer.pom").toFile(); + if (consumerPom.exists()) { + additionalDependencies.addAll(loadPomFromFile(consumerPom).getParsedPomFile().getDependencies()); + } + + return findProjectLocalRepository.resolve(groupId).resolve(artifactId).resolve(version) + .resolve(versionedArtifact + + classifier.filter(isNotEmpty).map(c -> "-" + c).orElse("") + + "." + extension.filter(isNotEmpty).orElse("jar")); + } + + private List filterFromLocal(final List depsForResolution, + final Collection projectLocalDependencies) { + return depsForResolution.stream() + .filter(dependency -> projectLocalDependencies.stream() + .noneMatch(result -> MavenConverter.asArtifact(dependency, + getSession().getArtifactTypeRegistry()) + .setProperties(Collections.EMPTY_MAP) + .equals(result.getArtifact().setPath(null)))) + .collect(Collectors.toList()); + } + + /** + * @return absolute path to the project-local repository or null if not found + */ + private Path findProjectLocalRepository() { + Path targetPath = Paths.get("target/project-local-repo"); + Path currentPath = Paths.get("").toAbsolutePath(); + while (currentPath != null) { + Path path = currentPath.resolve(targetPath); + if (path.toFile().exists()) { + return path; + } + currentPath = currentPath.getParent(); + } + return null; + } + @Override public Collection resolveDependencies(final MavenResolutionStrategy strategy) throws ResolutionException { @@ -198,7 +277,12 @@ public Collection resolveDependencies(final MavenResoluti final List repos = this.getRemoteRepositories(); - final CollectRequest request = new CollectRequest(MavenConverter.asDependencies(depsForResolution, + Set allDependencies = new LinkedHashSet<>(depsForResolution); + Collection projectLocalDependencies = resolveProjectLocal(depsForResolution, allDependencies); + List unresolvedLocally = filterFromLocal( + allDependencies.stream().collect(Collectors.toList()), projectLocalDependencies); + + final CollectRequest request = new CollectRequest(MavenConverter.asDependencies(unresolvedLocally, getSession().getArtifactTypeRegistry()), MavenConverter.asDependencies(depManagement, getSession().getArtifactTypeRegistry()), repos); @@ -231,7 +315,11 @@ public Collection resolveDependencies(final MavenResoluti throw wrapException(e); } - final Collection resolvedArtifacts = new ArrayList<>(results.size()); + final Collection resolvedArtifacts = new ArrayList<>(results.size() + projectLocalDependencies.size()); + + for (final ArtifactResult result : projectLocalDependencies) { + resolvedArtifacts.add(MavenResolvedArtifactImpl.fromArtifactResult(result)); + } for (final ArtifactResult result : results) { resolvedArtifacts.add(MavenResolvedArtifactImpl.fromArtifactResult(result));