Skip to content

Commit 858b716

Browse files
[MPLUGIN-457] Use Resolver API, get rid of localRepository
1 parent ece2802 commit 858b716

File tree

4 files changed

+42
-83
lines changed

4 files changed

+42
-83
lines changed

maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/DescriptorGeneratorMojo.java

+4-19
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import java.util.Set;
2828

2929
import org.apache.maven.artifact.Artifact;
30-
import org.apache.maven.artifact.repository.ArtifactRepository;
3130
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
3231
import org.apache.maven.artifact.resolver.filter.IncludesArtifactFilter;
3332
import org.apache.maven.plugin.MojoExecutionException;
@@ -49,6 +48,7 @@
4948
import org.apache.maven.tools.plugin.scanner.MojoScanner;
5049
import org.codehaus.plexus.component.repository.ComponentDependency;
5150
import org.codehaus.plexus.util.ReaderFactory;
51+
import org.eclipse.aether.RepositorySystemSession;
5252
import org.sonatype.plexus.build.incremental.BuildContext;
5353

5454
/**
@@ -229,22 +229,8 @@ public class DescriptorGeneratorMojo extends AbstractGeneratorMojo {
229229
@Parameter(defaultValue = "${settings}", readonly = true, required = true)
230230
private Settings settings;
231231

232-
/**
233-
* List of Remote Repositories used by the resolver
234-
*
235-
* @since 3.0
236-
*/
237-
@Parameter(defaultValue = "${project.remoteArtifactRepositories}", required = true, readonly = true)
238-
private List<ArtifactRepository> remoteRepos;
239-
240-
/**
241-
* Location of the local repository.
242-
*
243-
* @since 3.0
244-
*/
245-
@Parameter(defaultValue = "${localRepository}", required = true, readonly = true)
246-
private ArtifactRepository local;
247-
232+
@Parameter(defaultValue = "${repositorySystemSession}", readonly = true, required = true)
233+
private RepositorySystemSession repoSession;
248234
/**
249235
* The required Java version to set in the plugin descriptor. This is evaluated by Maven 4 and ignored by earlier
250236
* Maven versions. Can be either one of the following formats:
@@ -360,8 +346,7 @@ public void generate() throws MojoExecutionException {
360346
request.setEncoding(encoding);
361347
request.setSkipErrorNoDescriptorsFound(skipErrorNoDescriptorsFound);
362348
request.setDependencies(filterMojoDependencies());
363-
request.setLocal(this.local);
364-
request.setRemoteRepos(this.remoteRepos);
349+
request.setRepoSession(repoSession);
365350
request.setInternalJavadocBaseUrl(internalJavadocBaseUrl);
366351
request.setInternalJavadocVersion(internalJavadocVersion);
367352
request.setExternalJavadocBaseUrls(externalJavadocBaseUrls);

maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java

+23-18
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,13 @@
5151
import com.thoughtworks.qdox.model.JavaMember;
5252
import com.thoughtworks.qdox.model.JavaMethod;
5353
import org.apache.maven.artifact.Artifact;
54-
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
55-
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
5654
import org.apache.maven.artifact.versioning.ComparableVersion;
5755
import org.apache.maven.plugin.descriptor.InvalidParameterException;
5856
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
5957
import org.apache.maven.plugin.descriptor.MojoDescriptor;
6058
import org.apache.maven.plugin.descriptor.PluginDescriptor;
6159
import org.apache.maven.plugin.descriptor.Requirement;
6260
import org.apache.maven.project.MavenProject;
63-
import org.apache.maven.repository.RepositorySystem;
6461
import org.apache.maven.tools.plugin.ExtendedMojoDescriptor;
6562
import org.apache.maven.tools.plugin.PluginToolsRequest;
6663
import org.apache.maven.tools.plugin.extractor.ExtractionException;
@@ -85,6 +82,11 @@
8582
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
8683
import org.codehaus.plexus.logging.AbstractLogEnabled;
8784
import org.codehaus.plexus.util.StringUtils;
85+
import org.eclipse.aether.RepositorySystem;
86+
import org.eclipse.aether.artifact.DefaultArtifact;
87+
import org.eclipse.aether.resolution.ArtifactRequest;
88+
import org.eclipse.aether.resolution.ArtifactResolutionException;
89+
import org.eclipse.aether.resolution.ArtifactResult;
8890
import org.objectweb.asm.Opcodes;
8991

9092
/**
@@ -570,23 +572,26 @@ protected void extendJavaProjectBuilderWithSourcesJar(
570572
JavaProjectBuilder builder, Artifact artifact, PluginToolsRequest request, String classifier)
571573
throws ExtractionException {
572574
try {
573-
Artifact sourcesArtifact = repositorySystem.createArtifactWithClassifier(
575+
org.eclipse.aether.artifact.Artifact sourcesArtifact = new DefaultArtifact(
574576
artifact.getGroupId(),
575577
artifact.getArtifactId(),
576-
artifact.getVersion(),
577-
artifact.getType(),
578-
classifier);
579-
580-
ArtifactResolutionRequest req = new ArtifactResolutionRequest();
581-
req.setArtifact(sourcesArtifact);
582-
req.setLocalRepository(request.getLocal());
583-
req.setRemoteRepositories(request.getRemoteRepos());
584-
ArtifactResolutionResult res = repositorySystem.resolve(req);
585-
if (res.hasMissingArtifacts() || res.hasExceptions()) {
586-
getLogger()
587-
.warn("Unable to get sources artifact for " + artifact.getGroupId() + ":"
588-
+ artifact.getArtifactId() + ":" + artifact.getVersion()
589-
+ ". Some javadoc tags (@since, @deprecated and comments) won't be used");
578+
classifier,
579+
artifact.getArtifactHandler().getExtension(),
580+
artifact.getVersion());
581+
582+
ArtifactRequest resolveRequest =
583+
new ArtifactRequest(sourcesArtifact, request.getProject().getRemoteProjectRepositories(), null);
584+
try {
585+
ArtifactResult result = repositorySystem.resolveArtifact(request.getRepoSession(), resolveRequest);
586+
sourcesArtifact = result.getArtifact();
587+
} catch (ArtifactResolutionException e) {
588+
String message = "Unable to get sources artifact for " + artifact.getId()
589+
+ ". Some javadoc tags (@since, @deprecated and comments) won't be used";
590+
if (getLogger().isDebugEnabled()) {
591+
getLogger().warn(message, e);
592+
} else {
593+
getLogger().warn(message);
594+
}
590595
return;
591596
}
592597

maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java

+6-21
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@
2424
import java.util.Set;
2525

2626
import org.apache.maven.artifact.Artifact;
27-
import org.apache.maven.artifact.repository.ArtifactRepository;
2827
import org.apache.maven.plugin.descriptor.PluginDescriptor;
2928
import org.apache.maven.project.MavenProject;
3029
import org.apache.maven.settings.Settings;
3130
import org.codehaus.plexus.util.ReaderFactory;
3231
import org.codehaus.plexus.util.StringUtils;
32+
import org.eclipse.aether.RepositorySystemSession;
3333

3434
/**
3535
* 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 {
5353

5454
private Set<Artifact> dependencies;
5555

56-
private List<ArtifactRepository> remoteRepos;
57-
58-
private ArtifactRepository local;
56+
private RepositorySystemSession repoSession;
5957

6058
private URI internalJavadocBaseUrl;
6159

@@ -162,25 +160,12 @@ public PluginToolsRequest setDependencies(Set<Artifact> dependencies) {
162160
}
163161

164162
@Override
165-
public List<ArtifactRepository> getRemoteRepos() {
166-
return remoteRepos;
167-
}
168-
169-
@Override
170-
public PluginToolsRequest setRemoteRepos(List<ArtifactRepository> remoteRepos) {
171-
this.remoteRepos = remoteRepos;
172-
return this;
173-
}
174-
175-
@Override
176-
public ArtifactRepository getLocal() {
177-
return local;
163+
public RepositorySystemSession getRepoSession() {
164+
return repoSession;
178165
}
179166

180-
@Override
181-
public PluginToolsRequest setLocal(ArtifactRepository local) {
182-
this.local = local;
183-
return this;
167+
public void setRepoSession(RepositorySystemSession repoSession) {
168+
this.repoSession = repoSession;
184169
}
185170

186171
@Override

maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java

+9-25
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
import java.util.Set;
2424

2525
import org.apache.maven.artifact.Artifact;
26-
import org.apache.maven.artifact.repository.ArtifactRepository;
2726
import org.apache.maven.plugin.descriptor.PluginDescriptor;
2827
import org.apache.maven.project.MavenProject;
2928
import org.apache.maven.settings.Settings;
29+
import org.eclipse.aether.RepositorySystemSession;
3030

3131
/**
3232
* Request that encapsulates all information relevant to the process of extracting
@@ -111,37 +111,22 @@ public interface PluginToolsRequest {
111111
PluginToolsRequest setDependencies(Set<Artifact> dependencies);
112112

113113
/**
114+
* Return a Repository Session
114115
*
115-
* @return the remote repositories
116-
* @since 3.0
117-
*/
118-
List<ArtifactRepository> getRemoteRepos();
119-
120-
/**
121-
*
122-
* @param remoteRepos the remote repositories
123-
* @return This request.
124-
* @since 3.0
125-
*/
126-
PluginToolsRequest setRemoteRepos(List<ArtifactRepository> remoteRepos);
127-
128-
/**
129-
*
130-
* @return the local artifact repository
131-
* @since 3.0
116+
* @return a Repository Session
117+
* @since 3.8.2
132118
*/
133-
ArtifactRepository getLocal();
119+
RepositorySystemSession getRepoSession();
134120

135121
/**
122+
* Set a Repository Session
136123
*
137-
* @param local the local repository
138-
* @return This request.
139-
* @since 3.0
124+
* @param repoSession a Repository Session
125+
* @since 3.8.2
140126
*/
141-
PluginToolsRequest setLocal(ArtifactRepository local);
127+
void setRepoSession(RepositorySystemSession repoSession);
142128

143129
/**
144-
*
145130
* @param baseUrl may be relative to the current site's root
146131
* @return This request.
147132
* @since 3.7.0
@@ -183,7 +168,6 @@ public interface PluginToolsRequest {
183168
List<URI> getExternalJavadocBaseUrls();
184169

185170
/**
186-
*
187171
* @param settings the Maven settings
188172
* @return This request.
189173
* @since 3.7.0

0 commit comments

Comments
 (0)