From ff71f072d1de260cebd72c1e4db2c1475fc148b7 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Wed, 23 Nov 2022 20:18:01 +0100 Subject: [PATCH] Use Resolver Api for resolving artifacts fix #231 --- src/it/local-project-repo/invoker.properties | 2 + .../1.0/dumy-local-repo-1.0.pom | 7 +++ src/it/local-project-repo/pom.xml | 52 +++++++++++++++++++ src/it/local-project-repo/verify.groovy | 8 +++ .../enforcer/AbstractResolveDependencies.java | 27 +++++----- 5 files changed, 81 insertions(+), 15 deletions(-) create mode 100644 src/it/local-project-repo/invoker.properties create mode 100644 src/it/local-project-repo/local-repo/dumy/dumy-local-repo/1.0/dumy-local-repo-1.0.pom create mode 100644 src/it/local-project-repo/pom.xml create mode 100644 src/it/local-project-repo/verify.groovy diff --git a/src/it/local-project-repo/invoker.properties b/src/it/local-project-repo/invoker.properties new file mode 100644 index 00000000..98becc2a --- /dev/null +++ b/src/it/local-project-repo/invoker.properties @@ -0,0 +1,2 @@ +invoker.goals = enforcer:enforce +invoker.buildResult = success \ No newline at end of file diff --git a/src/it/local-project-repo/local-repo/dumy/dumy-local-repo/1.0/dumy-local-repo-1.0.pom b/src/it/local-project-repo/local-repo/dumy/dumy-local-repo/1.0/dumy-local-repo-1.0.pom new file mode 100644 index 00000000..e1ef851d --- /dev/null +++ b/src/it/local-project-repo/local-repo/dumy/dumy-local-repo/1.0/dumy-local-repo-1.0.pom @@ -0,0 +1,7 @@ + + 4.0.0 + dumy + dumy-local-repo + pom + 1.0 + diff --git a/src/it/local-project-repo/pom.xml b/src/it/local-project-repo/pom.xml new file mode 100644 index 00000000..9c0d5748 --- /dev/null +++ b/src/it/local-project-repo/pom.xml @@ -0,0 +1,52 @@ + + 4.0.0 + + org.codehaus.mojo.extra-enforcer-rules.it + local-project-repo + 1.0-SNAPSHOT + Resolve artifact from local repo + + + UTF-8 + + + + + dumy + dumy-local-repo + pom + 1.0 + + + + + + + maven-enforcer-plugin + @enforcerPluginVersion@ + + + @project.groupId@ + @project.artifactId@ + @project.version@ + + + + + + 1.8 + + + + + + + + + + local-project-repo + ${project.baseUri}local-repo + + + diff --git a/src/it/local-project-repo/verify.groovy b/src/it/local-project-repo/verify.groovy new file mode 100644 index 00000000..cc3585ae --- /dev/null +++ b/src/it/local-project-repo/verify.groovy @@ -0,0 +1,8 @@ +File file = new File( basedir, "build.log" ); +assert file.exists(); + +String text = file.getText( "utf-8" ); + +assert text.contains( '[DEBUG] Analyzing artifact dumy:dumy-local-repo:pom:1.0:compile' ) + +return true; diff --git a/src/main/java/org/apache/maven/plugins/enforcer/AbstractResolveDependencies.java b/src/main/java/org/apache/maven/plugins/enforcer/AbstractResolveDependencies.java index 61e4da46..a267334d 100644 --- a/src/main/java/org/apache/maven/plugins/enforcer/AbstractResolveDependencies.java +++ b/src/main/java/org/apache/maven/plugins/enforcer/AbstractResolveDependencies.java @@ -6,11 +6,8 @@ import java.util.Set; import java.util.regex.Pattern; +import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.resolver.ArtifactResolutionException; -import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; -import org.apache.maven.artifact.resolver.ArtifactResolutionResult; -import org.apache.maven.artifact.resolver.ResolutionErrorHandler; import org.apache.maven.enforcer.rule.api.EnforcerRule; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; @@ -18,12 +15,15 @@ import org.apache.maven.plugin.logging.Log; import org.apache.maven.project.DefaultProjectBuildingRequest; import org.apache.maven.project.ProjectBuildingRequest; -import org.apache.maven.repository.RepositorySystem; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException; import org.apache.maven.shared.dependency.graph.DependencyNode; import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResolutionException; +import org.eclipse.aether.resolution.ArtifactResult; /** * Abstract rule for when the content of the artifacts matters. @@ -38,7 +38,6 @@ public abstract class AbstractResolveDependencies extends AbstractMojoHausEnforc private MavenSession session; private RepositorySystem repositorySystem; - private ResolutionErrorHandler resolutionErrorHandler; private EnforcerRuleHelper helper; @@ -51,7 +50,6 @@ public void execute( EnforcerRuleHelper helper ) try { repositorySystem = helper.getComponent( RepositorySystem.class ); - resolutionErrorHandler = helper.getComponent( ResolutionErrorHandler.class ); graphBuilder = helper.getComponent( DependencyGraphBuilder.class ); } catch ( ComponentLookupException e ) @@ -142,16 +140,15 @@ private Set getAllDescendants( DependencyNode node ) private void resolveArtifact( Artifact artifact ) throws ArtifactResolutionException { - ArtifactResolutionRequest request = new ArtifactResolutionRequest() - .setArtifact( artifact ) - .setLocalRepository( session.getLocalRepository() ) - .setRemoteRepositories( session.getRequest().getProjectBuildingRequest().getRemoteRepositories() ) - .setOffline( session.isOffline() ) - .setForceUpdate( session.getRequest().isUpdateSnapshots() ); + ArtifactRequest request = new ArtifactRequest(); + request.setRepositories( session.getCurrentProject().getRemoteProjectRepositories() ); + request.setArtifact( RepositoryUtils.toArtifact( artifact ) ); - ArtifactResolutionResult result = repositorySystem.resolve( request ); + ArtifactResult artifactResult = repositorySystem.resolveArtifact( session.getRepositorySession(), request ); - resolutionErrorHandler.throwErrors( request, result ); + artifact.setFile( artifactResult.getArtifact().getFile() ); + artifact.setVersion( artifactResult.getArtifact().getVersion() ); + artifact.setResolved( true ); } protected Log getLog()