Skip to content

Commit

Permalink
Use Resolver Api for resolving artifacts
Browse files Browse the repository at this point in the history
fix #231
  • Loading branch information
slawekjaranowski committed Nov 23, 2022
1 parent fbdcf2c commit ff71f07
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 15 deletions.
2 changes: 2 additions & 0 deletions src/it/local-project-repo/invoker.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
invoker.goals = enforcer:enforce
invoker.buildResult = success
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>dumy</groupId>
<artifactId>dumy-local-repo</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
</project>
52 changes: 52 additions & 0 deletions src/it/local-project-repo/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.codehaus.mojo.extra-enforcer-rules.it</groupId>
<artifactId>local-project-repo</artifactId>
<version>1.0-SNAPSHOT</version>
<description>Resolve artifact from local repo</description>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>dumy</groupId>
<artifactId>dumy-local-repo</artifactId>
<type>pom</type>
<version>1.0</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>@enforcerPluginVersion@</version>
<dependencies>
<dependency>
<groupId>@project.groupId@</groupId>
<artifactId>@project.artifactId@</artifactId>
<version>@project.version@</version>
</dependency>
</dependencies>
<configuration>
<rules>
<enforceBytecodeVersion>
<maxJdkVersion>1.8</maxJdkVersion>
</enforceBytecodeVersion>
</rules>
</configuration>
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>local-project-repo</id>
<url>${project.baseUri}local-repo</url>
</repository>
</repositories>
</project>
8 changes: 8 additions & 0 deletions src/it/local-project-repo/verify.groovy
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,24 @@
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;
import org.apache.maven.execution.MavenSession;
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.
Expand All @@ -38,7 +38,6 @@ public abstract class AbstractResolveDependencies extends AbstractMojoHausEnforc

private MavenSession session;
private RepositorySystem repositorySystem;
private ResolutionErrorHandler resolutionErrorHandler;

private EnforcerRuleHelper helper;

Expand All @@ -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 )
Expand Down Expand Up @@ -142,16 +140,15 @@ private Set<Artifact> 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()
Expand Down

0 comments on commit ff71f07

Please sign in to comment.