diff --git a/animal-sniffer-maven-plugin/pom.xml b/animal-sniffer-maven-plugin/pom.xml index 2047abe6..16ee093d 100644 --- a/animal-sniffer-maven-plugin/pom.xml +++ b/animal-sniffer-maven-plugin/pom.xml @@ -66,12 +66,6 @@ ${maven.version} provided - - org.apache.maven - maven-compat - ${maven.version} - provided - org.apache.maven maven-artifact diff --git a/animal-sniffer-maven-plugin/src/it/issue-24/verify.groovy b/animal-sniffer-maven-plugin/src/it/issue-24/verify.groovy index e1119c7b..1561d949 100644 --- a/animal-sniffer-maven-plugin/src/it/issue-24/verify.groovy +++ b/animal-sniffer-maven-plugin/src/it/issue-24/verify.groovy @@ -1,3 +1,3 @@ File log = new File(basedir, 'build.log') assert log.exists() -assert log.text.contains( 'For artifact {org.codehaus.mojo.signature:java14:null:signature}: The version cannot be empty.' ) +assert log.text.contains( 'For artifact {org.codehaus.mojo.signature:java14:signature:}: The version cannot be empty' ) diff --git a/animal-sniffer-maven-plugin/src/main/java/org/codehaus/mojo/animal_sniffer/maven/CheckSignatureMojo.java b/animal-sniffer-maven-plugin/src/main/java/org/codehaus/mojo/animal_sniffer/maven/CheckSignatureMojo.java index 7777d896..aad6ee55 100644 --- a/animal-sniffer-maven-plugin/src/main/java/org/codehaus/mojo/animal_sniffer/maven/CheckSignatureMojo.java +++ b/animal-sniffer-maven-plugin/src/main/java/org/codehaus/mojo/animal_sniffer/maven/CheckSignatureMojo.java @@ -26,10 +26,6 @@ */ import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.factory.ArtifactFactory; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.resolver.AbstractArtifactResolutionException; -import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.model.Dependency; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; @@ -47,11 +43,15 @@ import org.codehaus.mojo.animal_sniffer.Clazz; import org.codehaus.mojo.animal_sniffer.SignatureChecker; import org.codehaus.plexus.util.StringUtils; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResolutionException; +import org.eclipse.aether.resolution.ArtifactResult; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -187,25 +187,16 @@ public void setSignature( String signatureId ) { @Parameter( defaultValue = "true", property = "animal.sniffer.failOnError" ) protected boolean failOnError; - /** - */ - @Component - protected ArtifactResolver resolver; - /** */ @Parameter( defaultValue = "${project}", readonly = true ) protected MavenProject project; - /** - */ - @Parameter( defaultValue = "${localRepository}", readonly=true ) - protected ArtifactRepository localRepository; + @Parameter( defaultValue = "${repositorySystemSession}", readonly = true ) + private RepositorySystemSession repositorySystemSession; - /** - */ @Component - protected ArtifactFactory artifactFactory; + private RepositorySystem repositorySystem; static Map> classes = new ConcurrentHashMap<>(); @@ -249,9 +240,8 @@ public void execute() getLog().info( "Checking unresolved references to " + signature ); - Artifact a = signature.createArtifact( artifactFactory ); + File signatureFile = resolveFileForArtifact( signature.createArtifact() ); - resolver.resolve( a, project.getRemoteArtifactRepositories(), localRepository ); // just check code from this module final Set ignoredPackages = buildPackageList(); @@ -268,7 +258,7 @@ public void execute() } final SignatureChecker signatureChecker = - new SignatureChecker( loadClasses( a.getFile() ), ignoredPackages, + new SignatureChecker( loadClasses( signatureFile ), ignoredPackages, new MavenLogger( getLog() ) ); signatureChecker.setCheckJars( false ); // don't want to decend into jar files that have been copied to // the output directory as resources. @@ -309,12 +299,24 @@ public void execute() { throw new MojoExecutionException( "Failed to check signatures", e ); } - catch ( AbstractArtifactResolutionException e ) + catch ( ArtifactResolutionException e ) { throw new MojoExecutionException( "Failed to obtain signature: " + signature, e ); } } + private File resolveFileForArtifact(org.eclipse.aether.artifact.Artifact artifact ) + throws ArtifactResolutionException, MojoExecutionException { + + if ( StringUtils.isBlank( artifact.getVersion() ) ) { + throw new MojoExecutionException( "For artifact {" + artifact + "}: The version cannot be empty." ); + } + + ArtifactRequest request = new ArtifactRequest( artifact, project.getRemotePluginRepositories(), null ); + ArtifactResult result = repositorySystem.resolveArtifact( repositorySystemSession, request ); + return result.getArtifact().getFile(); + } + private static Map loadClasses( File f ) throws IOException { Map classes = CheckSignatureMojo.classes.get( f ); diff --git a/animal-sniffer-maven-plugin/src/main/java/org/codehaus/mojo/animal_sniffer/maven/Signature.java b/animal-sniffer-maven-plugin/src/main/java/org/codehaus/mojo/animal_sniffer/maven/Signature.java index a11f9af8..7398956b 100644 --- a/animal-sniffer-maven-plugin/src/main/java/org/codehaus/mojo/animal_sniffer/maven/Signature.java +++ b/animal-sniffer-maven-plugin/src/main/java/org/codehaus/mojo/animal_sniffer/maven/Signature.java @@ -25,8 +25,8 @@ * */ -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.factory.ArtifactFactory; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; /** * Represents artifact in Maven POM. @@ -72,9 +72,9 @@ public void setVersion( String version ) this.version = version; } - public Artifact createArtifact( ArtifactFactory factory ) + public Artifact createArtifact() { - return factory.createArtifact( groupId, artifactId, version, null, "signature" ); + return new DefaultArtifact( groupId, artifactId, "signature", version); } public String toString()