From 34b9d77605d439342da8b1447af1051514c44bbc Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Sun, 18 Sep 2022 19:52:40 +0200 Subject: [PATCH] [MJAVADOC-731] Update parent pom to maven-plugins 37 Remove legacy plexus component annotations Remove usage of m-artifact-transfer and directly leverage m-resolver API Mark Maven Core plugins as provided dependencies --- pom.xml | 50 ++-- .../plugins/javadoc/AbstractJavadocMojo.java | 218 ++++++++++-------- .../maven/plugins/javadoc/TestJavadocJar.java | 12 +- .../plugins/javadoc/TestJavadocReport.java | 12 +- .../javadoc/resolver/ResourceResolver.java | 96 ++++---- .../javadoc/AggregatorJavadocReportTest.java | 2 +- .../plugins/javadoc/JavadocReportTest.java | 17 +- 7 files changed, 210 insertions(+), 197 deletions(-) diff --git a/pom.xml b/pom.xml index 3b2279a1f..b3e910092 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven.plugins maven-plugins - 34 + 37 @@ -71,7 +71,7 @@ under the License. 1.11.1 1.11.1 2.4 - 1.0.0.v20140518 + 1.0.0.v20140518 1.1.0 9.4.43.v20210629 @@ -171,26 +171,31 @@ under the License. org.apache.maven maven-core ${mavenVersion} + provided org.apache.maven maven-model ${mavenVersion} + provided org.apache.maven maven-settings ${mavenVersion} + provided org.apache.maven maven-plugin-api ${mavenVersion} + provided org.apache.maven maven-artifact ${mavenVersion} + provided org.apache.maven.plugin-tools @@ -198,11 +203,10 @@ under the License. provided - org.codehaus.plexus - plexus-component-annotations - provided + javax.inject + javax.inject + 1 - org.apache.maven.reporting @@ -224,11 +228,6 @@ under the License. maven-common-artifact-filters 3.1.1 - - org.apache.maven.shared - maven-artifact-transfer - 0.13.1 - @@ -412,7 +411,7 @@ under the License. org.apache.maven.plugins maven-javadoc-plugin - 3.3.1 + ${project.version} false @@ -445,16 +444,8 @@ under the License. - org.codehaus.plexus - plexus-component-metadata - - - - generate-metadata - generate-test-metadata - - - + org.eclipse.sisu + sisu-maven-plugin org.apache.maven.plugins @@ -470,19 +461,6 @@ under the License. false - - org.apache.maven.plugins - maven-plugin-plugin - 3.6.1 - - - - org.codehaus.plexus - plexus-utils - 3.1.1 - - - @@ -565,7 +543,7 @@ under the License. org.codehaus.mojo l10n-maven-plugin - 1.0-alpha-2 + 1.0.0 **/log4j.properties diff --git a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java index 91d734ff7..8d4f19397 100644 --- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java +++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java @@ -19,17 +19,54 @@ * under the License. */ + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.Writer; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.time.LocalDate; +import java.time.ZoneOffset; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Optional; +import java.util.Properties; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.stream.Collectors; + import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.ClassUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.maven.RepositoryUtils; import org.apache.maven.archiver.MavenArchiver; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; 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.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.execution.MavenSession; @@ -64,18 +101,10 @@ import org.apache.maven.reporting.MavenReportException; import org.apache.maven.settings.Proxy; import org.apache.maven.settings.Settings; -import org.apache.maven.shared.transfer.artifact.DefaultArtifactCoordinate; import org.apache.maven.shared.artifact.filter.resolve.AndFilter; import org.apache.maven.shared.artifact.filter.resolve.PatternExclusionsFilter; import org.apache.maven.shared.artifact.filter.resolve.PatternInclusionsFilter; -import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter; import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter; -import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver; -import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException; -import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult; -import org.apache.maven.shared.transfer.dependencies.DefaultDependableCoordinate; -import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver; -import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException; import org.apache.maven.shared.invoker.MavenInvocationException; import org.apache.maven.toolchain.Toolchain; import org.apache.maven.toolchain.ToolchainManager; @@ -102,49 +131,27 @@ import org.codehaus.plexus.util.cli.CommandLineUtils; import org.codehaus.plexus.util.cli.Commandline; import org.codehaus.plexus.util.xml.Xpp3Dom; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.Writer; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLClassLoader; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.time.LocalDate; -import java.time.ZoneOffset; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Optional; -import java.util.Properties; -import java.util.Set; -import java.util.StringTokenizer; -import java.util.stream.Collectors; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.artifact.ArtifactTypeRegistry; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.collection.CollectRequest; +import org.eclipse.aether.graph.DefaultDependencyNode; +import org.eclipse.aether.graph.DependencyFilter; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResolutionException; +import org.eclipse.aether.resolution.ArtifactResult; +import org.eclipse.aether.resolution.DependencyRequest; +import org.eclipse.aether.resolution.DependencyResolutionException; +import org.eclipse.aether.util.filter.AndDependencyFilter; +import org.eclipse.aether.util.filter.PatternExclusionsDependencyFilter; +import org.eclipse.aether.util.filter.ScopeDependencyFilter; import static org.apache.commons.lang3.SystemUtils.isJavaVersionAtLeast; -import static org.apache.maven.plugins.javadoc.JavadocUtil.toRelative; -import static org.apache.maven.plugins.javadoc.JavadocUtil.toList; import static org.apache.maven.plugins.javadoc.JavadocUtil.isEmpty; import static org.apache.maven.plugins.javadoc.JavadocUtil.isNotEmpty; +import static org.apache.maven.plugins.javadoc.JavadocUtil.toList; +import static org.apache.maven.plugins.javadoc.JavadocUtil.toRelative; /** * Base class with majority of Javadoc functionalities. @@ -291,13 +298,13 @@ public abstract class AbstractJavadocMojo private ResourceResolver resourceResolver; @Component - private ArtifactResolver artifactResolver; + private RepositorySystem repoSystem; - @Component - private ArtifactHandlerManager artifactHandlerManager; + @Parameter( defaultValue = "${repositorySystemSession}", readonly = true, required = true ) + private RepositorySystemSession repoSession; @Component - private DependencyResolver dependencyResolver; + private ArtifactHandlerManager artifactHandlerManager; /** * Project builder @@ -2412,7 +2419,8 @@ protected final Collection getDependencySourcePaths() { return resourceResolver.resolveDependencySourcePaths( config ); } - catch ( final ArtifactResolutionException | ArtifactNotFoundException e ) + catch ( org.apache.maven.artifact.resolver.ArtifactResolutionException + | org.apache.maven.artifact.resolver.ArtifactNotFoundException e ) { throw new MavenReportException( "Failed to resolve one or more javadoc source/resource artifacts:\n\n" + e.getMessage(), e ); @@ -2620,6 +2628,18 @@ private static List trimValues( List items ) return result; } + private List toResolverDependencies( List dependencies ) + { + if ( dependencies == null ) + { + return null; + } + ArtifactTypeRegistry registry = RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager ); + return dependencies.stream() + .map( d -> RepositoryUtils.toDependency( d, registry ) ) + .collect( Collectors.toList() ); + } + /** * Method that gets the classpath and modulepath elements that will be specified in the javadoc * -classpath and --module-path parameter. @@ -2653,9 +2673,9 @@ private Collection getPathElements() reactorArtifacts.add( p.getGroupId() + ':' + p.getArtifactId() ); } - TransformableFilter dependencyFilter = new AndFilter( Arrays.asList( - new PatternExclusionsFilter( reactorArtifacts ), - getDependencyScopeFilter() ) ); + DependencyFilter dependencyFilter = new AndDependencyFilter( + new PatternExclusionsDependencyFilter( reactorArtifacts ), + getDependencyScopeFilter() ); for ( MavenProject subProject : aggregatorProjects ) { @@ -2680,22 +2700,23 @@ private Collection getPathElements() sb.append( subProject.getArtifactId() ).append( ":" ); sb.append( subProject.getVersion() ).append( '\n' ); - ProjectBuildingRequest buildingRequest = getProjectBuildingRequest( subProject ); - List managedDependencies = null; if ( subProject.getDependencyManagement() != null ) { managedDependencies = subProject.getDependencyManagement().getDependencies(); } + CollectRequest collRequest = new CollectRequest( + toResolverDependencies( subProject.getDependencies() ), + toResolverDependencies( managedDependencies ), + project.getRemoteProjectRepositories() ); + DependencyRequest depRequest = new DependencyRequest( collRequest, dependencyFilter ); for ( ArtifactResult artifactResult - : dependencyResolver.resolveDependencies( buildingRequest, - subProject.getDependencies(), - managedDependencies, - dependencyFilter ) ) + : repoSystem.resolveDependencies( repoSession, depRequest ).getArtifactResults() ) { - populateCompileArtifactMap( compileArtifactMap, - Collections.singletonList( artifactResult.getArtifact() ) ); + List artifacts = Collections.singletonList( + RepositoryUtils.toArtifact( artifactResult.getArtifact() ) ); + populateCompileArtifactMap( compileArtifactMap, artifacts ); sb.append( artifactResult.getArtifact().getFile() ).append( '\n' ); } @@ -2706,7 +2727,7 @@ private Collection getPathElements() } } - catch ( DependencyResolverException e ) + catch ( DependencyResolutionException e ) { throw new MavenReportException( e.getMessage(), e ); } @@ -2732,9 +2753,11 @@ private Collection getPathElements() return classpathElements; } - protected ScopeFilter getDependencyScopeFilter() + protected ScopeDependencyFilter getDependencyScopeFilter() { - return ScopeFilter.including( Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_SYSTEM ); + return new ScopeDependencyFilter( Arrays.asList( Artifact.SCOPE_COMPILE, + Artifact.SCOPE_PROVIDED, + Artifact.SCOPE_SYSTEM ), null ); } /** @@ -2745,18 +2768,14 @@ protected ScopeFilter getDependencyScopeFilter() public Artifact resolveDependency( Dependency dependency ) throws MavenReportException { - DefaultArtifactCoordinate coordinate = new DefaultArtifactCoordinate(); - coordinate.setGroupId( dependency.getGroupId() ); - coordinate.setArtifactId( dependency.getArtifactId() ); - coordinate.setVersion( dependency.getVersion() ); - coordinate.setClassifier( dependency.getClassifier() ); - coordinate.setExtension( artifactHandlerManager.getArtifactHandler( dependency.getType() ).getExtension() ); - - try + ArtifactRequest req = new ArtifactRequest( RepositoryUtils.toDependency( dependency, null ).getArtifact(), + project.getRemoteProjectRepositories(), null ); + try { - return artifactResolver.resolveArtifact( getProjectBuildingRequest( project ), coordinate ).getArtifact(); - } - catch ( ArtifactResolverException e ) + ArtifactResult resolutionResult = repoSystem.resolveArtifact( repoSession, req ); + return RepositoryUtils.toArtifact( resolutionResult.getArtifact( ) ); + } + catch ( ArtifactResolutionException e ) { throw new MavenReportException( "artifact resolver problem - " + e.getMessage(), e ); } @@ -3584,14 +3603,13 @@ private List getArtifactsAbsolutePath( JavadocPathArtifact javadocArtifa Artifact artifact = createAndResolveArtifact( javadocArtifact ); path.add( artifact.getFile().getAbsolutePath() ); - DefaultDependableCoordinate coordinate = new DefaultDependableCoordinate(); - coordinate.setGroupId( javadocArtifact.getGroupId() ); - coordinate.setArtifactId( javadocArtifact.getArtifactId() ); - coordinate.setVersion( javadocArtifact.getVersion() ); - + DependencyFilter filter = new ScopeDependencyFilter( + Arrays.asList( Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED ), + Collections.emptySet() ); + DependencyRequest req = new DependencyRequest( + new DefaultDependencyNode( RepositoryUtils.toArtifact( artifact ) ), filter ); Iterable deps = - dependencyResolver.resolveDependencies( getProjectBuildingRequest( project ), coordinate, - ScopeFilter.including( "compile", "provided" ) ); + repoSystem.resolveDependencies( repoSession, req ).getArtifactResults(); for ( ArtifactResult a : deps ) { path.add( a.getArtifact().getFile().getAbsolutePath() ); @@ -3599,11 +3617,11 @@ private List getArtifactsAbsolutePath( JavadocPathArtifact javadocArtifa return path; } - catch ( ArtifactResolverException e ) + catch ( ArtifactResolutionException e ) { throw new MavenReportException( "Unable to resolve artifact:" + javadocArtifact, e ); } - catch ( DependencyResolverException e ) + catch ( DependencyResolutionException e ) { throw new MavenReportException( "Unable to resolve dependencies for:" + javadocArtifact, e ); } @@ -3614,18 +3632,20 @@ private List getArtifactsAbsolutePath( JavadocPathArtifact javadocArtifa * * @param javadocArtifact the {@link JavadocPathArtifact} to resolve * @return a resolved {@link Artifact} + * @throws org.eclipse.aether.resolution.ArtifactResolutionException * @throws ArtifactResolverException issue while resolving artifact */ - private Artifact createAndResolveArtifact( JavadocPathArtifact javadocArtifact ) - throws ArtifactResolverException + private Artifact createAndResolveArtifact( JavadocPathArtifact javadocArtifact ) + throws org.eclipse.aether.resolution.ArtifactResolutionException { - DefaultArtifactCoordinate coordinate = new DefaultArtifactCoordinate(); - coordinate.setGroupId( javadocArtifact.getGroupId() ); - coordinate.setArtifactId( javadocArtifact.getArtifactId() ); - coordinate.setVersion( javadocArtifact.getVersion() ); - coordinate.setClassifier( javadocArtifact.getClassifier() ); - - return artifactResolver.resolveArtifact( getProjectBuildingRequest( project ), coordinate ).getArtifact(); + org.eclipse.aether.artifact.Artifact artifact = + new DefaultArtifact( javadocArtifact.getGroupId(), + javadocArtifact.getArtifactId(), + javadocArtifact.getClassifier(), + "jar", + javadocArtifact.getVersion() ); + ArtifactRequest req = new ArtifactRequest( artifact, project.getRemoteProjectRepositories(), null ); + return RepositoryUtils.toArtifact( repoSystem.resolveArtifact( repoSession, req ).getArtifact() ); } /** @@ -4411,7 +4431,7 @@ private void copyAdditionalJavadocResources( File anOutputDirectory ) { artifact = createAndResolveArtifact( item ); } - catch ( ArtifactResolverException e ) + catch ( ArtifactResolutionException e ) { throw new MavenReportException( "Unable to resolve artifact:" + item, e ); } @@ -5696,7 +5716,7 @@ private void addTagletsFromTagletArtifacts( List arguments ) { artifact = createAndResolveArtifact( aTagletArtifact ); } - catch ( ArtifactResolverException e ) + catch ( ArtifactResolutionException e ) { throw new MavenReportException( "Unable to resolve artifact:" + aTagletArtifact, e ); } diff --git a/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocJar.java b/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocJar.java index ed725c7ce..e282d121c 100644 --- a/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocJar.java +++ b/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocJar.java @@ -26,11 +26,12 @@ import org.apache.maven.plugins.annotations.ResolutionScope; import org.apache.maven.plugins.javadoc.resolver.SourceResolverConfig; import org.apache.maven.project.MavenProject; -import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter; import org.codehaus.plexus.util.StringUtils; +import org.eclipse.aether.util.filter.ScopeDependencyFilter; import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -187,10 +188,13 @@ protected List getExecutionProjectSourceRoots( MavenProject p ) } @Override - protected ScopeFilter getDependencyScopeFilter() + protected ScopeDependencyFilter getDependencyScopeFilter() { - return ScopeFilter.including( Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_SYSTEM, - Artifact.SCOPE_TEST ); + return new ScopeDependencyFilter( Arrays.asList( + Artifact.SCOPE_COMPILE, + Artifact.SCOPE_PROVIDED, + Artifact.SCOPE_SYSTEM, + Artifact.SCOPE_TEST ), null ); } /** diff --git a/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocReport.java b/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocReport.java index 72b1a57c2..f419f7f3a 100644 --- a/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocReport.java +++ b/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocReport.java @@ -28,11 +28,12 @@ import org.apache.maven.plugins.javadoc.resolver.SourceResolverConfig; import org.apache.maven.project.MavenProject; import org.apache.maven.reporting.MavenReportException; -import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter; import org.codehaus.plexus.util.StringUtils; +import org.eclipse.aether.util.filter.ScopeDependencyFilter; import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -289,10 +290,13 @@ protected String getWindowtitle() } @Override - protected ScopeFilter getDependencyScopeFilter() + protected ScopeDependencyFilter getDependencyScopeFilter() { - return ScopeFilter.including( Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_SYSTEM, - Artifact.SCOPE_TEST ); + return new ScopeDependencyFilter( Arrays.asList( + Artifact.SCOPE_COMPILE, + Artifact.SCOPE_PROVIDED, + Artifact.SCOPE_SYSTEM, + Artifact.SCOPE_TEST ), null ); } /** diff --git a/src/main/java/org/apache/maven/plugins/javadoc/resolver/ResourceResolver.java b/src/main/java/org/apache/maven/plugins/javadoc/resolver/ResourceResolver.java index 01c7abc3d..a5151bb4d 100644 --- a/src/main/java/org/apache/maven/plugins/javadoc/resolver/ResourceResolver.java +++ b/src/main/java/org/apache/maven/plugins/javadoc/resolver/ResourceResolver.java @@ -19,6 +19,11 @@ * under the License. */ + +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -26,19 +31,17 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.DefaultArtifact; -import org.apache.maven.artifact.factory.ArtifactFactory; -import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; -import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.plugins.javadoc.AbstractJavadocMojo; import org.apache.maven.plugins.javadoc.JavadocModule; import org.apache.maven.plugins.javadoc.JavadocUtil; @@ -47,37 +50,31 @@ import org.apache.maven.plugins.javadoc.options.io.xpp3.JavadocOptionsXpp3Reader; import org.apache.maven.project.MavenProject; import org.apache.maven.shared.artifact.filter.resolve.transform.ArtifactIncludeFilterTransformer; -import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver; -import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException; -import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver; +import org.apache.maven.shared.artifact.filter.resolve.transform.EclipseAetherFilterTransformer; import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.UnArchiver; import org.codehaus.plexus.archiver.manager.ArchiverManager; import org.codehaus.plexus.archiver.manager.NoSuchArchiverException; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.graph.DefaultDependencyNode; +import org.eclipse.aether.graph.DependencyFilter; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResult; /** * */ -@Component( role = ResourceResolver.class ) +@Named +@Singleton public final class ResourceResolver extends AbstractLogEnabled { - @Requirement - private ArtifactFactory artifactFactory; - - @Requirement - private ArtifactResolver resolver; - - @Requirement - private DependencyResolver dependencyResolver; - - @Requirement - private ArtifactMetadataSource artifactMetadataSource; - - @Requirement + @Inject + private RepositorySystem repoSystem; + + @Inject private ArchiverManager archiverManager; /** @@ -233,7 +230,7 @@ private List resolveBundlesFromArtifacts( final SourceResolverCon final List artifacts ) throws IOException { - final List toResolve = new ArrayList<>( artifacts.size() ); + final List toResolve = new ArrayList<>( artifacts.size() ); for ( final Artifact artifact : artifacts ) { @@ -303,7 +300,7 @@ private JavadocModule resolveFromArtifact( final SourceResolverConfig config, final Artifact artifact ) throws ArtifactResolutionException, ArtifactNotFoundException { - final List toResolve = new ArrayList<>( 2 ); + final List toResolve = new ArrayList<>( 2 ); if ( config.filter() != null && !new ArtifactIncludeFilterTransformer().transform( config.filter() ).include( artifact ) ) @@ -328,18 +325,15 @@ private JavadocModule resolveFromArtifact( final SourceResolverConfig config, sourcePaths ); } - private Artifact createResourceArtifact( final Artifact artifact, final String classifier, - final SourceResolverConfig config ) + private org.eclipse.aether.artifact.Artifact createResourceArtifact( final Artifact artifact, + final String classifier, + final SourceResolverConfig config ) { - final DefaultArtifact a = - (DefaultArtifact) artifactFactory.createArtifactWithClassifier( artifact.getGroupId(), - artifact.getArtifactId(), - artifact.getVersion(), "jar", - classifier ); - - a.setRepository( artifact.getRepository() ); - - return a; + return new org.eclipse.aether.artifact.DefaultArtifact( artifact.getGroupId(), + artifact.getArtifactId(), + classifier, + "jar", + artifact.getVersion() ); } /** @@ -352,7 +346,7 @@ private Artifact createResourceArtifact( final Artifact artifact, final String c * @throws ArtifactResolutionException if an exception occurs * @throws ArtifactNotFoundException if an exception occurs */ - private Collection resolveAndUnpack( final List artifacts, + private Collection resolveAndUnpack( final List artifacts, final SourceResolverConfig config, final List validClassifiers, final boolean propagateErrors ) @@ -361,12 +355,12 @@ private Collection resolveAndUnpack( final List artifacts, // NOTE: Since these are '-sources' and '-test-sources' artifacts, they won't actually // resolve transitively...this is just used to aggregate resolution failures into a single // exception. - final Set artifactSet = new LinkedHashSet<>( artifacts ); + final Set artifactSet = new LinkedHashSet<>( artifacts ); - final ArtifactFilter filter; + final DependencyFilter filter; if ( config.filter() != null ) { - filter = new ArtifactIncludeFilterTransformer().transform( config.filter() ); + filter = new EclipseAetherFilterTransformer().transform( config.filter() ); } else { @@ -374,23 +368,26 @@ private Collection resolveAndUnpack( final List artifacts, } final List result = new ArrayList<>( artifacts.size() ); - for ( final Artifact a : artifactSet ) + for ( final org.eclipse.aether.artifact.Artifact a : artifactSet ) { - if ( !validClassifiers.contains( a.getClassifier() ) || ( filter != null && !filter.include( a ) ) ) + if ( !validClassifiers.contains( a.getClassifier() ) || ( filter != null + && !filter.accept( new DefaultDependencyNode( a ), Collections.emptyList() ) ) ) { continue; } Artifact resolvedArtifact; - try + ArtifactRequest req = new ArtifactRequest( a, config.project().getRemoteProjectRepositories(), null ); + try { - resolvedArtifact = resolver.resolveArtifact( config.getBuildingRequest(), a ).getArtifact(); + RepositorySystemSession repoSession = config.getBuildingRequest().getRepositorySession(); + ArtifactResult resolutionResult = repoSystem.resolveArtifact( repoSession, req ); + resolvedArtifact = RepositoryUtils.toArtifact( resolutionResult.getArtifact() ); } - catch ( ArtifactResolverException e1 ) + catch ( org.eclipse.aether.resolution.ArtifactResolutionException e ) { continue; } - final File d = new File( config.outputBasedir(), a.getArtifactId() + "-" + a.getVersion() + "-" + a.getClassifier() ); @@ -401,7 +398,7 @@ private Collection resolveAndUnpack( final List artifacts, try { - final UnArchiver unArchiver = archiverManager.getUnArchiver( a.getType() ); + final UnArchiver unArchiver = archiverManager.getUnArchiver( a.getExtension() ); unArchiver.setDestDirectory( d ); unArchiver.setSourceFile( resolvedArtifact.getFile() ); @@ -415,14 +412,15 @@ private Collection resolveAndUnpack( final List artifacts, if ( propagateErrors ) { throw new ArtifactResolutionException( "Failed to retrieve valid un-archiver component: " - + a.getType(), a, e ); + + a.getExtension(), RepositoryUtils.toArtifact( a ), e ); } } catch ( final ArchiverException e ) { if ( propagateErrors ) { - throw new ArtifactResolutionException( "Failed to unpack: " + a.getId(), a, e ); + throw new ArtifactResolutionException( "Failed to unpack: " + a.toString(), + RepositoryUtils.toArtifact( a ), e ); } } } diff --git a/src/test/java/org/apache/maven/plugins/javadoc/AggregatorJavadocReportTest.java b/src/test/java/org/apache/maven/plugins/javadoc/AggregatorJavadocReportTest.java index 338bdc23b..85d84305e 100644 --- a/src/test/java/org/apache/maven/plugins/javadoc/AggregatorJavadocReportTest.java +++ b/src/test/java/org/apache/maven/plugins/javadoc/AggregatorJavadocReportTest.java @@ -80,7 +80,7 @@ private JavadocReport lookupMojo( File testPom ) DefaultRepositorySystemSession repoSysSession = (DefaultRepositorySystemSession) session.getRepositorySession(); repoSysSession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repoSysSession, new LocalRepository( localRepo ) ) ); setVariableValueToObject( mojo, "session", session ); - + setVariableValueToObject( mojo, "repoSession", repoSysSession ); return mojo; } diff --git a/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java b/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java index 4200ec055..845a41e06 100644 --- a/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java +++ b/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java @@ -118,8 +118,9 @@ private JavadocReport lookupMojo( Path testPom ) currentProject.setGroupId( "GROUPID" ); currentProject.setArtifactId( "ARTIFACTID" ); - setVariableValueToObject( mojo, "session", newMavenSession( currentProject ) ); - + MavenSession session = newMavenSession( currentProject ); + setVariableValueToObject( mojo, "session", session ); + setVariableValueToObject( mojo, "repoSession", session.getRepositorySession() ); return mojo; } @@ -514,7 +515,7 @@ public void testDoclets() legacySupport.setSession( session ); setVariableValueToObject( mojo, "session", session ); - + setVariableValueToObject( mojo, "repoSession", repositorySession ); mojo.execute(); Path generatedFile = new File( getBasedir(), "target/test/unit/doclet-test/target/site/apidocs/graph.dot" ).toPath(); @@ -533,6 +534,7 @@ public void testDoclets() testPom = unit.resolve( "doclet-path-test/doclet-path-test-plugin-config.xml" ); mojo = lookupMojo( testPom ); setVariableValueToObject( mojo, "session", session ); + setVariableValueToObject( mojo, "repoSession", repositorySession ); mojo.execute(); generatedFile = new File( getBasedir(), "target/test/unit/doclet-test/target/site/apidocs/graph.dot" ).toPath(); @@ -696,6 +698,7 @@ public void testTaglets() legacySupport.setSession( session ); setVariableValueToObject( mojo, "session", session ); + setVariableValueToObject( mojo, "repoSession", repositorySession ); mojo.execute(); @@ -992,6 +995,7 @@ public void testProxy() setVariableValueToObject( mojo, "settings", settings ); setVariableValueToObject( mojo, "session", session ); + setVariableValueToObject( mojo, "repoSession", repositorySession ); mojo.execute(); Path commandLine = new File( getBasedir(), "target/test/unit/proxy-test/target/site/apidocs/javadoc." + ( SystemUtils.IS_OS_WINDOWS ? "bat" : "sh" ) ).toPath(); @@ -1033,6 +1037,7 @@ public void testProxy() mojo = lookupMojo( testPom ); setVariableValueToObject( mojo, "settings", settings ); setVariableValueToObject( mojo, "session", session ); + setVariableValueToObject( mojo, "repoSession", repositorySession ); mojo.execute(); readed = readFile( commandLine ); assertTrue( readed.contains( "-J-Dhttp.proxyHost=" + proxyServer.getHostName() ) ); @@ -1080,6 +1085,7 @@ public void testProxy() mojo = lookupMojo( testPom ); setVariableValueToObject( mojo, "settings", settings ); setVariableValueToObject( mojo, "session", session ); + setVariableValueToObject( mojo, "repoSession", repositorySession ); mojo.execute(); readed = readFile( commandLine ); assertThat( readed ).contains( "-J-Dhttp.proxyHost=" + proxyServer.getHostName() ) @@ -1202,7 +1208,7 @@ public void testTagletArtifacts() LegacySupport legacySupport = lookup( LegacySupport.class ); legacySupport.setSession( session ); setVariableValueToObject( mojo, "session", session ); - + setVariableValueToObject( mojo, "repoSession", repositorySession ); mojo.execute(); Path optionsFile = new File( mojo.getOutputDirectory(), "options" ).toPath(); @@ -1240,6 +1246,7 @@ public void testStylesheetfile() LegacySupport legacySupport = lookup( LegacySupport.class ); legacySupport.setSession( session ); setVariableValueToObject( mojo, "session", session ); + setVariableValueToObject( mojo, "repoSession", repositorySession ); Path apidocs = new File( getBasedir(), "target/test/unit/stylesheetfile-test/target/site/apidocs" ).toPath(); @@ -1362,6 +1369,7 @@ public void testHelpfile() LegacySupport legacySupport = lookup( LegacySupport.class ); legacySupport.setSession( session ); setVariableValueToObject( mojo, "session", session ); + setVariableValueToObject( mojo, "repoSession", repositorySession ); Path apidocs = new File( getBasedir(), "target/test/unit/helpfile-test/target/site/apidocs" ).toPath(); @@ -1381,6 +1389,7 @@ public void testHelpfile() setVariableValueToObject( mojo, "helpfile", "com/mycompany/app/javadoc/helpfile/help-doc.html" ); setVariableValueToObject( mojo, "session", session ); + setVariableValueToObject( mojo, "repoSession", repositorySession ); mojo.execute();