This is an automated email from the ASF dual-hosted git repository. cstamas pushed a commit to branch switch-to-resolver in repository https://gitbox.apache.org/repos/asf/maven-compiler-plugin.git
commit 6015c0bc9cf5f6aae2bd22f3d4056a058cd9cb72 Author: Tamas Cservenak <[email protected]> AuthorDate: Mon Sep 26 14:54:25 2022 +0200 Move away from legacy maven-compat And switch to resolver to resolver annotation processors with dependencies. --- pom.xml | 1 + .../plugin/compiler/AbstractCompilerMojo.java | 74 ++++++++++++---------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/pom.xml b/pom.xml index 467a251..1732a06 100644 --- a/pom.xml +++ b/pom.xml @@ -188,6 +188,7 @@ under the License. <version>3.3.0</version> <scope>test</scope> </dependency> + <!-- maven-compat: is must due AbstractMojoTestCase :( --> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-compat</artifactId> diff --git a/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java b/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java index 58d907d..fb2c9ea 100644 --- a/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java +++ b/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java @@ -40,14 +40,8 @@ import java.util.Map; import java.util.Properties; import java.util.Set; -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; -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.artifact.versioning.VersionRange; import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; @@ -56,7 +50,6 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; -import org.apache.maven.repository.RepositorySystem; import org.apache.maven.shared.incremental.IncrementalBuildHelper; import org.apache.maven.shared.incremental.IncrementalBuildHelperRequest; import org.apache.maven.shared.utils.ReaderFactory; @@ -85,6 +78,16 @@ import org.codehaus.plexus.compiler.util.scan.mapping.SourceMapping; import org.codehaus.plexus.compiler.util.scan.mapping.SuffixMapping; import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor; import org.codehaus.plexus.languages.java.version.JavaVersion; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.collection.CollectRequest; +import org.eclipse.aether.graph.Dependency; +import org.eclipse.aether.resolution.ArtifactResolutionException; +import org.eclipse.aether.resolution.ArtifactResult; +import org.eclipse.aether.resolution.DependencyRequest; +import org.eclipse.aether.resolution.DependencyResult; +import org.eclipse.aether.util.artifact.JavaScopes; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.Opcodes; @@ -583,12 +586,6 @@ public abstract class AbstractCompilerMojo @Component private ArtifactHandlerManager artifactHandlerManager; - /** - * Throws an exception on artifact resolution errors. - */ - @Component - private ResolutionErrorHandler resolutionErrorHandler; - protected abstract SourceInclusionScanner getSourceInclusionScanner( int staleMillis ); protected abstract SourceInclusionScanner getSourceInclusionScanner( String inputFileEnding ); @@ -1841,29 +1838,36 @@ public abstract class AbstractCompilerMojo ArtifactHandler handler = artifactHandlerManager.getArtifactHandler( coord.getType() ); Artifact artifact = new DefaultArtifact( - coord.getGroupId(), - coord.getArtifactId(), - VersionRange.createFromVersionSpec( coord.getVersion() ), - Artifact.SCOPE_RUNTIME, - coord.getType(), - coord.getClassifier(), - handler, - false ); - - ArtifactResolutionRequest request = new ArtifactResolutionRequest() - .setArtifact( artifact ) - .setResolveRoot( true ) - .setResolveTransitively( true ) - .setLocalRepository( session.getLocalRepository() ) - .setRemoteRepositories( project.getRemoteArtifactRepositories() ); - - ArtifactResolutionResult resolutionResult = repositorySystem.resolve( request ); - - resolutionErrorHandler.throwErrors( request, resolutionResult ); - - for ( Artifact resolved : resolutionResult.getArtifacts() ) + coord.getGroupId(), + coord.getArtifactId(), + coord.getClassifier(), + handler.getExtension(), + coord.getVersion() + ); + + CollectRequest collectRequest = new CollectRequest( new Dependency( artifact, JavaScopes.RUNTIME ), + project.getRemoteProjectRepositories() ); + DependencyRequest dependencyRequest = new DependencyRequest(); + dependencyRequest.setCollectRequest( collectRequest ); + DependencyResult dependencyResult = repositorySystem.resolveDependencies( + session.getRepositorySession(), dependencyRequest ); + + ArrayList<ArtifactResult> failed = new ArrayList<>(); + for ( ArtifactResult resolved : dependencyResult.getArtifactResults() ) + { + if ( resolved.getArtifact() != null && resolved.getArtifact().getFile() != null ) + { + elements.add( resolved.getArtifact().getFile().getAbsolutePath() ); + } + else + { + failed.add( resolved ); + } + } + if ( !failed.isEmpty() ) { - elements.add( resolved.getFile().getAbsolutePath() ); + throw new MojoExecutionException( "Error resolving processor path entries", + new ArtifactResolutionException( failed ) ); } } return new ArrayList<>( elements );
