You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2022/09/26 12:55:09 UTC
[maven-compiler-plugin] 01/01: Move away from legacy maven-compat
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 <ta...@cservenak.net>
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 );