diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/DescriptorGeneratorMojo.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/DescriptorGeneratorMojo.java index 72b67ea0..66aa75f4 100644 --- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/DescriptorGeneratorMojo.java +++ b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/DescriptorGeneratorMojo.java @@ -27,7 +27,6 @@ import java.util.Set; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.artifact.resolver.filter.IncludesArtifactFilter; import org.apache.maven.plugin.MojoExecutionException; @@ -49,6 +48,7 @@ import org.apache.maven.tools.plugin.scanner.MojoScanner; import org.codehaus.plexus.component.repository.ComponentDependency; import org.codehaus.plexus.util.ReaderFactory; +import org.eclipse.aether.RepositorySystemSession; import org.sonatype.plexus.build.incremental.BuildContext; /** @@ -229,22 +229,8 @@ public class DescriptorGeneratorMojo extends AbstractGeneratorMojo { @Parameter(defaultValue = "${settings}", readonly = true, required = true) private Settings settings; - /** - * List of Remote Repositories used by the resolver - * - * @since 3.0 - */ - @Parameter(defaultValue = "${project.remoteArtifactRepositories}", required = true, readonly = true) - private List remoteRepos; - - /** - * Location of the local repository. - * - * @since 3.0 - */ - @Parameter(defaultValue = "${localRepository}", required = true, readonly = true) - private ArtifactRepository local; - + @Parameter(defaultValue = "${repositorySystemSession}", readonly = true, required = true) + private RepositorySystemSession repoSession; /** * The required Java version to set in the plugin descriptor. This is evaluated by Maven 4 and ignored by earlier * Maven versions. Can be either one of the following formats: @@ -360,8 +346,7 @@ public void generate() throws MojoExecutionException { request.setEncoding(encoding); request.setSkipErrorNoDescriptorsFound(skipErrorNoDescriptorsFound); request.setDependencies(filterMojoDependencies()); - request.setLocal(this.local); - request.setRemoteRepos(this.remoteRepos); + request.setRepoSession(repoSession); request.setInternalJavadocBaseUrl(internalJavadocBaseUrl); request.setInternalJavadocVersion(internalJavadocVersion); request.setExternalJavadocBaseUrls(externalJavadocBaseUrls); diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java index 972bfd80..a90f24e2 100644 --- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java +++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java @@ -51,8 +51,6 @@ import com.thoughtworks.qdox.model.JavaMember; import com.thoughtworks.qdox.model.JavaMethod; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; -import org.apache.maven.artifact.resolver.ArtifactResolutionResult; import org.apache.maven.artifact.versioning.ComparableVersion; import org.apache.maven.plugin.descriptor.InvalidParameterException; import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException; @@ -60,7 +58,6 @@ import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugin.descriptor.Requirement; import org.apache.maven.project.MavenProject; -import org.apache.maven.repository.RepositorySystem; import org.apache.maven.tools.plugin.ExtendedMojoDescriptor; import org.apache.maven.tools.plugin.PluginToolsRequest; import org.apache.maven.tools.plugin.extractor.ExtractionException; @@ -85,6 +82,11 @@ import org.codehaus.plexus.archiver.manager.NoSuchArchiverException; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.util.StringUtils; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResolutionException; +import org.eclipse.aether.resolution.ArtifactResult; import org.objectweb.asm.Opcodes; /** @@ -570,23 +572,26 @@ protected void extendJavaProjectBuilderWithSourcesJar( JavaProjectBuilder builder, Artifact artifact, PluginToolsRequest request, String classifier) throws ExtractionException { try { - Artifact sourcesArtifact = repositorySystem.createArtifactWithClassifier( + org.eclipse.aether.artifact.Artifact sourcesArtifact = new DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(), - artifact.getVersion(), - artifact.getType(), - classifier); - - ArtifactResolutionRequest req = new ArtifactResolutionRequest(); - req.setArtifact(sourcesArtifact); - req.setLocalRepository(request.getLocal()); - req.setRemoteRepositories(request.getRemoteRepos()); - ArtifactResolutionResult res = repositorySystem.resolve(req); - if (res.hasMissingArtifacts() || res.hasExceptions()) { - getLogger() - .warn("Unable to get sources artifact for " + artifact.getGroupId() + ":" - + artifact.getArtifactId() + ":" + artifact.getVersion() - + ". Some javadoc tags (@since, @deprecated and comments) won't be used"); + classifier, + artifact.getArtifactHandler().getExtension(), + artifact.getVersion()); + + ArtifactRequest resolveRequest = + new ArtifactRequest(sourcesArtifact, request.getProject().getRemoteProjectRepositories(), null); + try { + ArtifactResult result = repositorySystem.resolveArtifact(request.getRepoSession(), resolveRequest); + sourcesArtifact = result.getArtifact(); + } catch (ArtifactResolutionException e) { + String message = "Unable to get sources artifact for " + artifact.getId() + + ". Some javadoc tags (@since, @deprecated and comments) won't be used"; + if (getLogger().isDebugEnabled()) { + getLogger().warn(message, e); + } else { + getLogger().warn(message); + } return; } diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java index 79aff9eb..317a2668 100644 --- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java +++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java @@ -24,12 +24,12 @@ import java.util.Set; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.project.MavenProject; import org.apache.maven.settings.Settings; import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.StringUtils; +import org.eclipse.aether.RepositorySystemSession; /** * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract @@ -53,9 +53,7 @@ public class DefaultPluginToolsRequest implements PluginToolsRequest { private Set dependencies; - private List remoteRepos; - - private ArtifactRepository local; + private RepositorySystemSession repoSession; private URI internalJavadocBaseUrl; @@ -162,25 +160,12 @@ public PluginToolsRequest setDependencies(Set dependencies) { } @Override - public List getRemoteRepos() { - return remoteRepos; - } - - @Override - public PluginToolsRequest setRemoteRepos(List remoteRepos) { - this.remoteRepos = remoteRepos; - return this; - } - - @Override - public ArtifactRepository getLocal() { - return local; + public RepositorySystemSession getRepoSession() { + return repoSession; } - @Override - public PluginToolsRequest setLocal(ArtifactRepository local) { - this.local = local; - return this; + public void setRepoSession(RepositorySystemSession repoSession) { + this.repoSession = repoSession; } @Override diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java index 89417641..079b120d 100644 --- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java +++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java @@ -23,10 +23,10 @@ import java.util.Set; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.project.MavenProject; import org.apache.maven.settings.Settings; +import org.eclipse.aether.RepositorySystemSession; /** * Request that encapsulates all information relevant to the process of extracting @@ -111,37 +111,22 @@ public interface PluginToolsRequest { PluginToolsRequest setDependencies(Set dependencies); /** + * Return a Repository Session * - * @return the remote repositories - * @since 3.0 - */ - List getRemoteRepos(); - - /** - * - * @param remoteRepos the remote repositories - * @return This request. - * @since 3.0 - */ - PluginToolsRequest setRemoteRepos(List remoteRepos); - - /** - * - * @return the local artifact repository - * @since 3.0 + * @return a Repository Session + * @since 3.8.2 */ - ArtifactRepository getLocal(); + RepositorySystemSession getRepoSession(); /** + * Set a Repository Session * - * @param local the local repository - * @return This request. - * @since 3.0 + * @param repoSession a Repository Session + * @since 3.8.2 */ - PluginToolsRequest setLocal(ArtifactRepository local); + void setRepoSession(RepositorySystemSession repoSession); /** - * * @param baseUrl may be relative to the current site's root * @return This request. * @since 3.7.0 @@ -183,7 +168,6 @@ public interface PluginToolsRequest { List getExternalJavadocBaseUrls(); /** - * * @param settings the Maven settings * @return This request. * @since 3.7.0