From 3195d557fc5ee2a0d29bfb04de14cc0dcbde2620 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Wed, 6 Jul 2022 21:31:21 +0200 Subject: [PATCH] Remove maven-compat from project dependencies --- pom.xml | 7 --- .../enforcer/AbstractResolveDependencies.java | 58 ++++++++++--------- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index 380bbd0f..08d3de43 100644 --- a/pom.xml +++ b/pom.xml @@ -93,13 +93,6 @@ ${maven.version} provided - - - org.apache.maven - maven-compat - ${maven.version} - provided - 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 446b07ee..57ca6647 100644 --- a/src/main/java/org/apache/maven/plugins/enforcer/AbstractResolveDependencies.java +++ b/src/main/java/org/apache/maven/plugins/enforcer/AbstractResolveDependencies.java @@ -7,18 +7,18 @@ import java.util.regex.Pattern; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; -import org.apache.maven.artifact.resolver.ArtifactResolver; +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; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.logging.Log; import org.apache.maven.project.DefaultProjectBuildingRequest; -import org.apache.maven.project.MavenProject; 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; @@ -34,15 +34,14 @@ public abstract class AbstractResolveDependencies extends AbstractMojoHausEnforcerRule { - private transient DependencyGraphBuilder graphBuilder; - - private transient ArtifactResolver resolver; + private DependencyGraphBuilder graphBuilder; - private transient ArtifactRepository localRepository; + private MavenSession session; + private RepositorySystem repositorySystem; + private ResolutionErrorHandler resolutionErrorHandler; + + private EnforcerRuleHelper helper; - private transient List remoteRepositories; - - private transient EnforcerRuleHelper helper; public void execute( EnforcerRuleHelper helper ) throws EnforcerRuleException { @@ -51,7 +50,8 @@ public void execute( EnforcerRuleHelper helper ) // Get components try { - resolver = helper.getComponent( ArtifactResolver.class ); + repositorySystem = helper.getComponent( RepositorySystem.class ); + resolutionErrorHandler = helper.getComponent( ResolutionErrorHandler.class ); graphBuilder = helper.getComponent( DependencyGraphBuilder.class ); } catch ( ComponentLookupException e ) @@ -60,23 +60,18 @@ public void execute( EnforcerRuleHelper helper ) } // Resolve expressions - MavenProject project; - MavenSession session; try { - project = (MavenProject) helper.evaluate( "${project}" ); session = (MavenSession) helper.evaluate( "${session}" ); - localRepository = (ArtifactRepository) helper.evaluate( "${localRepository}" ); - //noinspection unchecked - remoteRepositories = (List) helper.evaluate( "${project.remoteArtifactRepositories}" ); } catch ( ExpressionEvaluationException e ) { throw new EnforcerRuleException( "Unable to lookup an expression " + e.getLocalizedMessage(), e ); } + ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest( session.getProjectBuildingRequest() ); - buildingRequest.setProject( project ); + buildingRequest.setProject( session.getCurrentProject() ); handleArtifacts( getDependenciesToCheck( buildingRequest ) ); } @@ -88,7 +83,7 @@ protected boolean isSearchTransitive() return true; } - private Set getDependenciesToCheck( ProjectBuildingRequest buildingRequest ) + private Set getDependenciesToCheck( ProjectBuildingRequest buildingRequest ) throws EnforcerRuleException { Set dependencies = null; try @@ -110,8 +105,7 @@ else if ( node.getChildren() != null ) } catch ( DependencyGraphBuilderException e ) { - // otherwise we need to change the signature of this protected method - throw new RuntimeException( e ); + throw new EnforcerRuleException( e.getMessage(), e ); } return dependencies; } @@ -127,9 +121,7 @@ private Set getAllDescendants( DependencyNode node ) try { Artifact artifact = depNode.getArtifact(); - - resolver.resolve( artifact, remoteRepositories, localRepository ); - + resolveArtifact( artifact ); children.add( artifact ); Set subNodes = getAllDescendants( depNode ); @@ -139,7 +131,7 @@ private Set getAllDescendants( DependencyNode node ) children.addAll( subNodes ); } } - catch ( ArtifactResolutionException | ArtifactNotFoundException e ) + catch ( ArtifactResolutionException e ) { getLog().warn( e.getMessage() ); } @@ -148,6 +140,20 @@ private Set getAllDescendants( DependencyNode node ) return children; } + private void resolveArtifact( Artifact artifact ) throws ArtifactResolutionException + { + ArtifactResolutionRequest request = new ArtifactResolutionRequest() + .setArtifact( artifact ) + .setLocalRepository( session.getLocalRepository() ) + .setRemoteRepositories( session.getRequest().getRemoteRepositories() ) + .setOffline( session.isOffline() ) + .setForceUpdate( session.getRequest().isUpdateSnapshots() ); + + ArtifactResolutionResult result = repositorySystem.resolve( request ); + + resolutionErrorHandler.throwErrors( request, result ); + } + protected Log getLog() { return helper.getLog();