Skip to content

Commit a69038f

Browse files
Use Resolver API in copy and unpack
Next step to remove maven-artifact-transfer and legacy staff
1 parent d52bc1f commit a69038f

File tree

7 files changed

+65
-98
lines changed

7 files changed

+65
-98
lines changed

src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/AbstractFromConfigurationMojo.java

Lines changed: 54 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.Objects;
2525

2626
import org.apache.commons.lang3.StringUtils;
27+
import org.apache.maven.RepositoryUtils;
2728
import org.apache.maven.artifact.Artifact;
2829
import org.apache.maven.artifact.handler.ArtifactHandler;
2930
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
@@ -36,12 +37,17 @@
3637
import org.apache.maven.plugins.dependency.utils.DependencyUtil;
3738
import org.apache.maven.plugins.dependency.utils.filters.ArtifactItemFilter;
3839
import org.apache.maven.project.MavenProject;
39-
import org.apache.maven.project.ProjectBuildingRequest;
4040
import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException;
41-
import org.apache.maven.shared.transfer.artifact.DefaultArtifactCoordinate;
42-
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
43-
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException;
44-
import org.apache.maven.shared.transfer.repository.RepositoryManager;
41+
import org.eclipse.aether.DefaultRepositoryCache;
42+
import org.eclipse.aether.DefaultRepositorySystemSession;
43+
import org.eclipse.aether.RepositorySystem;
44+
import org.eclipse.aether.RepositorySystemSession;
45+
import org.eclipse.aether.artifact.DefaultArtifact;
46+
import org.eclipse.aether.repository.LocalRepository;
47+
import org.eclipse.aether.repository.LocalRepositoryManager;
48+
import org.eclipse.aether.resolution.ArtifactRequest;
49+
import org.eclipse.aether.resolution.ArtifactResolutionException;
50+
import org.eclipse.aether.resolution.ArtifactResult;
4551
import org.sonatype.plexus.build.incremental.BuildContext;
4652

4753
/**
@@ -112,23 +118,19 @@ public abstract class AbstractFromConfigurationMojo extends AbstractDependencyMo
112118
@Parameter
113119
private File localRepositoryDirectory;
114120

115-
private final ArtifactResolver artifactResolver;
116-
117-
private final RepositoryManager repositoryManager;
118-
119121
private final ArtifactHandlerManager artifactHandlerManager;
120122

123+
private final RepositorySystem repositorySystem;
124+
121125
protected AbstractFromConfigurationMojo(
122126
MavenSession session,
123127
BuildContext buildContext,
124128
MavenProject project,
125-
ArtifactResolver artifactResolver,
126-
RepositoryManager repositoryManager,
127-
ArtifactHandlerManager artifactHandlerManager) {
129+
ArtifactHandlerManager artifactHandlerManager,
130+
RepositorySystem repositorySystem) {
128131
super(session, buildContext, project);
129-
this.artifactResolver = artifactResolver;
130-
this.repositoryManager = repositoryManager;
131132
this.artifactHandlerManager = artifactHandlerManager;
133+
this.repositorySystem = repositorySystem;
132134
}
133135

134136
abstract ArtifactItemFilter getMarkedArtifactFilter(ArtifactItem item);
@@ -156,9 +158,9 @@ protected void verifyRequirements() throws MojoFailureException {
156158
protected List<ArtifactItem> getProcessedArtifactItems(ProcessArtifactItemsRequest processArtifactItemsRequest)
157159
throws MojoExecutionException {
158160

159-
boolean removeVersion = processArtifactItemsRequest.isRemoveVersion(),
160-
prependGroupId = processArtifactItemsRequest.isPrependGroupId(),
161-
useBaseVersion = processArtifactItemsRequest.isUseBaseVersion();
161+
boolean removeVersion = processArtifactItemsRequest.isRemoveVersion();
162+
boolean prependGroupId = processArtifactItemsRequest.isPrependGroupId();
163+
boolean useBaseVersion = processArtifactItemsRequest.isUseBaseVersion();
162164

163165
boolean removeClassifier = processArtifactItemsRequest.isRemoveClassifier();
164166

@@ -196,11 +198,31 @@ protected List<ArtifactItem> getProcessedArtifactItems(ProcessArtifactItemsReque
196198
return artifactItems;
197199
}
198200

199-
private boolean checkIfProcessingNeeded(ArtifactItem item) throws MojoExecutionException, ArtifactFilterException {
201+
private boolean checkIfProcessingNeeded(ArtifactItem item) throws ArtifactFilterException {
200202
return "true".equalsIgnoreCase(item.getOverWrite())
201203
|| getMarkedArtifactFilter(item).isArtifactIncluded(item);
202204
}
203205

206+
private RepositorySystemSession createSystemSessionForLocalRepo() {
207+
RepositorySystemSession repositorySystemSession = session.getRepositorySession();
208+
if (localRepositoryDirectory != null) {
209+
// "clone" repository session and replace localRepository
210+
DefaultRepositorySystemSession newSession =
211+
new DefaultRepositorySystemSession(session.getRepositorySession());
212+
// Clear cache, since we're using a new local repository
213+
newSession.setCache(new DefaultRepositoryCache());
214+
LocalRepositoryManager localRepositoryManager = repositorySystem.newLocalRepositoryManager(
215+
newSession, new LocalRepository(localRepositoryDirectory));
216+
217+
newSession.setLocalRepositoryManager(localRepositoryManager);
218+
repositorySystemSession = newSession;
219+
getLog().debug("localRepoPath: "
220+
+ localRepositoryManager.getRepository().getBasedir());
221+
}
222+
223+
return repositorySystemSession;
224+
}
225+
204226
/**
205227
* Resolves the Artifact from the remote repository if necessary. If no version is specified, it will be retrieved
206228
* from the dependency list or from the DependencyManagement section of the pom.
@@ -210,23 +232,8 @@ private boolean checkIfProcessingNeeded(ArtifactItem item) throws MojoExecutionE
210232
* @throws MojoExecutionException if the version can't be found in DependencyManagement
211233
*/
212234
protected Artifact getArtifact(ArtifactItem artifactItem) throws MojoExecutionException {
213-
Artifact artifact;
214235

215236
try {
216-
ProjectBuildingRequest buildingRequest = newResolveArtifactProjectBuildingRequest();
217-
218-
if (localRepositoryDirectory != null) {
219-
buildingRequest =
220-
repositoryManager.setLocalRepositoryBasedir(buildingRequest, localRepositoryDirectory);
221-
}
222-
223-
// Map dependency to artifact coordinate
224-
DefaultArtifactCoordinate coordinate = new DefaultArtifactCoordinate();
225-
coordinate.setGroupId(artifactItem.getGroupId());
226-
coordinate.setArtifactId(artifactItem.getArtifactId());
227-
coordinate.setVersion(artifactItem.getVersion());
228-
coordinate.setClassifier(artifactItem.getClassifier());
229-
230237
final String extension;
231238

232239
ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler(artifactItem.getType());
@@ -235,16 +242,23 @@ protected Artifact getArtifact(ArtifactItem artifactItem) throws MojoExecutionEx
235242
} else {
236243
extension = artifactItem.getType();
237244
}
238-
coordinate.setExtension(extension);
239245

240-
artifact = artifactResolver
241-
.resolveArtifact(buildingRequest, coordinate)
242-
.getArtifact();
243-
} catch (ArtifactResolverException e) {
246+
DefaultArtifact artifact = new DefaultArtifact(
247+
artifactItem.getGroupId(),
248+
artifactItem.getArtifactId(),
249+
artifactItem.getClassifier(),
250+
extension,
251+
artifactItem.getVersion());
252+
253+
RepositorySystemSession repositorySession = createSystemSessionForLocalRepo();
254+
255+
ArtifactRequest request = new ArtifactRequest(artifact, getProject().getRemoteProjectRepositories(), null);
256+
ArtifactResult artifactResult = repositorySystem.resolveArtifact(repositorySession, request);
257+
return RepositoryUtils.toArtifact(artifactResult.getArtifact());
258+
259+
} catch (ArtifactResolutionException e) {
244260
throw new MojoExecutionException("Unable to find/resolve artifact.", e);
245261
}
246-
247-
return artifact;
248262
}
249263

250264
/**

src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/CopyMojo.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@
3636
import org.apache.maven.plugins.dependency.utils.filters.ArtifactItemFilter;
3737
import org.apache.maven.plugins.dependency.utils.filters.DestFileFilter;
3838
import org.apache.maven.project.MavenProject;
39-
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
40-
import org.apache.maven.shared.transfer.repository.RepositoryManager;
39+
import org.eclipse.aether.RepositorySystem;
4140
import org.sonatype.plexus.build.incremental.BuildContext;
4241

4342
/**
@@ -92,11 +91,10 @@ public CopyMojo(
9291
MavenSession session,
9392
BuildContext buildContext,
9493
MavenProject project,
95-
ArtifactResolver artifactResolver,
96-
RepositoryManager repositoryManager,
9794
ArtifactHandlerManager artifactHandlerManager,
98-
CopyUtil copyUtil) {
99-
super(session, buildContext, project, artifactResolver, repositoryManager, artifactHandlerManager);
95+
CopyUtil copyUtil,
96+
RepositorySystem repositorySystem) {
97+
super(session, buildContext, project, artifactHandlerManager, repositorySystem);
10098
this.copyUtil = copyUtil;
10199
}
102100

src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/UnpackMojo.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@
3636
import org.apache.maven.plugins.dependency.utils.markers.MarkerHandler;
3737
import org.apache.maven.plugins.dependency.utils.markers.UnpackFileMarkerHandler;
3838
import org.apache.maven.project.MavenProject;
39-
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
40-
import org.apache.maven.shared.transfer.repository.RepositoryManager;
4139
import org.codehaus.plexus.components.io.filemappers.FileMapper;
40+
import org.eclipse.aether.RepositorySystem;
4241
import org.sonatype.plexus.build.incremental.BuildContext;
4342

4443
/**
@@ -110,11 +109,10 @@ public UnpackMojo(
110109
MavenSession session,
111110
BuildContext buildContext,
112111
MavenProject project,
113-
ArtifactResolver artifactResolver,
114-
RepositoryManager repositoryManager,
115112
ArtifactHandlerManager artifactHandlerManager,
116-
UnpackUtil unpackUtil) {
117-
super(session, buildContext, project, artifactResolver, repositoryManager, artifactHandlerManager);
113+
UnpackUtil unpackUtil,
114+
RepositorySystem repositorySystem) {
115+
super(session, buildContext, project, artifactHandlerManager, repositorySystem);
118116
this.unpackUtil = unpackUtil;
119117
}
120118

src/test/java/org/apache/maven/plugins/dependency/exclusion/AnalyzeExclusionsMojoTest.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.apache.maven.model.Exclusion;
3535
import org.apache.maven.model.InputLocation;
3636
import org.apache.maven.model.InputSource;
37-
import org.apache.maven.plugin.LegacySupport;
3837
import org.apache.maven.plugin.MojoExecutionException;
3938
import org.apache.maven.plugin.logging.Log;
4039
import org.apache.maven.plugins.dependency.AbstractDependencyMojoTestCase;
@@ -97,10 +96,6 @@ protected void setUp() throws Exception {
9796
mojo = (AnalyzeExclusionsMojo) lookupMojo("analyze-exclusions", testPom);
9897
assertNotNull(mojo);
9998

100-
LegacySupport legacySupport = lookup(LegacySupport.class);
101-
legacySupport.setSession(session);
102-
installLocalRepository(legacySupport);
103-
10499
testLog = new TestLog();
105100
mojo.setLog(testLog);
106101
}

src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestCopyMojo.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.apache.maven.artifact.versioning.VersionRange;
2929
import org.apache.maven.execution.MavenSession;
3030
import org.apache.maven.model.Dependency;
31-
import org.apache.maven.plugin.LegacySupport;
3231
import org.apache.maven.plugin.MojoExecutionException;
3332
import org.apache.maven.plugins.dependency.AbstractDependencyMojoTestCase;
3433
import org.apache.maven.plugins.dependency.testUtils.stubs.DependencyProjectStub;
@@ -71,9 +70,7 @@ protected void setUp() throws Exception {
7170
assertNotNull(mojo);
7271
assertNotNull(mojo.getProject());
7372

74-
LegacySupport legacySupport = lookup(LegacySupport.class);
75-
legacySupport.setSession(session);
76-
installLocalRepository(legacySupport);
73+
installLocalRepository(session.getRepositorySession());
7774
}
7875

7976
private ArtifactItem getSingleArtifactItem(boolean removeVersion, boolean useBaseVersion)
@@ -147,7 +144,7 @@ public void assertFileExists(ArtifactItem item, boolean exist) {
147144
}
148145

149146
public void testMojoDefaults() {
150-
CopyMojo theMojo = new CopyMojo(null, null, null, null, null, null, null);
147+
CopyMojo theMojo = new CopyMojo(null, null, null, null, null, null);
151148

152149
assertFalse(theMojo.isStripVersion());
153150
assertFalse(theMojo.isSkip());
@@ -507,14 +504,6 @@ public void testMissingVersionFromDependencyMgtWithClassifier() throws Exception
507504
}
508505

509506
public void testArtifactNotFound() throws Exception {
510-
dotestArtifactExceptions(false, true);
511-
}
512-
513-
public void testArtifactResolutionException() throws Exception {
514-
dotestArtifactExceptions(true, false);
515-
}
516-
517-
public void dotestArtifactExceptions(boolean are, boolean anfe) throws Exception {
518507
ArtifactItem item = new ArtifactItem();
519508

520509
item.setArtifactId("artifactId");

src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestUnpackMojo.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.apache.maven.artifact.versioning.VersionRange;
3131
import org.apache.maven.execution.MavenSession;
3232
import org.apache.maven.model.Dependency;
33-
import org.apache.maven.plugin.LegacySupport;
3433
import org.apache.maven.plugin.MojoExecutionException;
3534
import org.apache.maven.plugins.dependency.AbstractDependencyMojoTestCase;
3635
import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory;
@@ -87,10 +86,7 @@ protected void setUp() throws Exception {
8786
stubFactory.setSrcFile(new File(
8887
getBasedir() + File.separatorChar + "target/test-classes/unit/unpack-dependencies-test/test.txt"));
8988

90-
LegacySupport legacySupport = lookup(LegacySupport.class);
91-
92-
legacySupport.setSession(session);
93-
installLocalRepository(legacySupport);
89+
installLocalRepository(session.getRepositorySession());
9490
}
9591

9692
public ArtifactItem getSingleArtifactItem(boolean removeVersion) throws MojoExecutionException {
@@ -374,14 +370,6 @@ public void testMissingVersionFromDependencyMgtWithClassifier() throws Exception
374370
}
375371

376372
public void testArtifactNotFound() throws Exception {
377-
dotestArtifactExceptions(false, true);
378-
}
379-
380-
public void testArtifactResolutionException() throws Exception {
381-
dotestArtifactExceptions(true, false);
382-
}
383-
384-
public void dotestArtifactExceptions(boolean are, boolean anfe) throws Exception {
385373
ArtifactItem item = new ArtifactItem();
386374

387375
item.setArtifactId("artifactId");

src/test/java/org/apache/maven/plugins/dependency/utils/translators/TestClassifierTypeTranslator.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,8 @@
2626
import org.apache.maven.artifact.Artifact;
2727
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
2828
import org.apache.maven.artifact.handler.manager.DefaultArtifactHandlerManager;
29-
import org.apache.maven.artifact.repository.ArtifactRepository;
30-
import org.apache.maven.execution.MavenSession;
31-
import org.apache.maven.plugin.LegacySupport;
3229
import org.apache.maven.plugin.logging.Log;
3330
import org.apache.maven.plugin.testing.SilentLog;
34-
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
35-
import org.apache.maven.plugin.testing.stubs.StubArtifactRepository;
3631
import org.apache.maven.plugins.dependency.AbstractDependencyMojoTestCase;
3732
import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory;
3833

@@ -42,8 +37,6 @@
4237
public class TestClassifierTypeTranslator extends AbstractDependencyMojoTestCase {
4338
Set<Artifact> artifacts = new HashSet<>();
4439

45-
ArtifactRepository artifactRepository;
46-
4740
Log log = new SilentLog();
4841

4942
private ArtifactHandlerManager artifactHandlerManager;
@@ -65,16 +58,8 @@ protected void setUp() throws Exception {
6558
artifactHandlerManager = new DefaultArtifactHandlerManager();
6659
this.setVariableValueToObject(artifactHandlerManager, "artifactHandlers", new HashMap<>());
6760

68-
artifactRepository = new StubArtifactRepository(null);
69-
7061
DependencyArtifactStubFactory factory = new DependencyArtifactStubFactory(null, false);
7162
artifacts = factory.getMixedArtifacts();
72-
73-
LegacySupport legacySupport = lookup(LegacySupport.class);
74-
MavenSession session = newMavenSession(new MavenProjectStub());
75-
legacySupport.setSession(session);
76-
77-
installLocalRepository(legacySupport);
7863
}
7964

8065
public void testNullClassifier() {

0 commit comments

Comments
 (0)