Skip to content

Commit 8b74a28

Browse files
authored
[MDEP-966] Convert remaining Mojos to Guice injection (#500)
* Convert Mojos to Guice constructor injection
1 parent 89744d0 commit 8b74a28

21 files changed

+322
-72
lines changed

src/main/java/org/apache/maven/plugins/dependency/AbstractDependencyMojo.java

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.apache.maven.plugin.MojoExecutionException;
2727
import org.apache.maven.plugin.MojoFailureException;
2828
import org.apache.maven.plugin.logging.SystemStreamLog;
29-
import org.apache.maven.plugins.annotations.Component;
3029
import org.apache.maven.plugins.annotations.Parameter;
3130
import org.apache.maven.plugins.dependency.utils.DependencySilentLog;
3231
import org.apache.maven.project.DefaultProjectBuildingRequest;
@@ -39,27 +38,6 @@
3938
*/
4039
public abstract class AbstractDependencyMojo extends AbstractMojo {
4140

42-
/**
43-
* For IDE build support
44-
*/
45-
@Component
46-
private BuildContext buildContext;
47-
48-
/**
49-
* Skip plugin execution only during incremental builds (e.g. triggered from M2E).
50-
*
51-
* @since 3.4.0
52-
* @see #skip
53-
*/
54-
@Parameter(defaultValue = "false")
55-
private boolean skipDuringIncrementalBuild;
56-
57-
/**
58-
* POM
59-
*/
60-
@Component
61-
private MavenProject project;
62-
6341
/**
6442
* Remote repositories which will be searched for artifacts.
6543
*/
@@ -81,8 +59,7 @@ public abstract class AbstractDependencyMojo extends AbstractMojo {
8159
/**
8260
* The Maven session
8361
*/
84-
@Component
85-
protected MavenSession session;
62+
protected final MavenSession session;
8663

8764
/**
8865
* If the plugin should be silent.
@@ -102,6 +79,31 @@ public abstract class AbstractDependencyMojo extends AbstractMojo {
10279
@Parameter(property = "mdep.skip", defaultValue = "false")
10380
private boolean skip;
10481

82+
/**
83+
* Skip plugin execution only during incremental builds (e.g. triggered from M2E).
84+
*
85+
* @since 3.4.0
86+
* @see #skip
87+
*/
88+
@Parameter(defaultValue = "false")
89+
private boolean skipDuringIncrementalBuild;
90+
91+
/**
92+
* For IDE build support
93+
*/
94+
private final BuildContext buildContext;
95+
96+
/**
97+
* POM
98+
*/
99+
private final MavenProject project;
100+
101+
protected AbstractDependencyMojo(MavenSession session, BuildContext buildContext, MavenProject project) {
102+
this.session = session;
103+
this.buildContext = buildContext;
104+
this.project = project;
105+
}
106+
105107
// Mojo methods -----------------------------------------------------------
106108

107109
/*

src/main/java/org/apache/maven/plugins/dependency/ListRepositoriesMojo.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@
3131
import java.util.stream.Collectors;
3232

3333
import org.apache.maven.RepositoryUtils;
34+
import org.apache.maven.execution.MavenSession;
3435
import org.apache.maven.model.DependencyManagement;
3536
import org.apache.maven.plugin.MojoExecutionException;
3637
import org.apache.maven.plugins.annotations.Mojo;
38+
import org.apache.maven.project.MavenProject;
3739
import org.eclipse.aether.RepositorySystem;
3840
import org.eclipse.aether.artifact.ArtifactTypeRegistry;
3941
import org.eclipse.aether.collection.CollectRequest;
@@ -43,6 +45,7 @@
4345
import org.eclipse.aether.graph.DependencyVisitor;
4446
import org.eclipse.aether.repository.RemoteRepository;
4547
import org.eclipse.aether.util.graph.visitor.TreeDependencyVisitor;
48+
import org.sonatype.plexus.build.incremental.BuildContext;
4649

4750
/**
4851
* Goal that collects all project dependencies and then lists the repositories used by the build and by the transitive
@@ -57,14 +60,16 @@ public class ListRepositoriesMojo extends AbstractDependencyMojo {
5760
private final RepositorySystem repositorySystem;
5861

5962
@Inject
60-
public ListRepositoriesMojo(RepositorySystem repositorySystem) {
63+
public ListRepositoriesMojo(
64+
MavenSession session, BuildContext buildContext, MavenProject project, RepositorySystem repositorySystem) {
65+
super(session, buildContext, project);
6166
this.repositorySystem = repositorySystem;
6267
}
6368

6469
/**
6570
* Displays a list of the repositories used by this build.
6671
*
67-
* @throws MojoExecutionException with a message if an error occurs.
72+
* @throws MojoExecutionException with a message if an error occurs
6873
*/
6974
@Override
7075
protected void doExecute() throws MojoExecutionException {

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

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
import org.apache.maven.artifact.Artifact;
2828
import org.apache.maven.artifact.handler.ArtifactHandler;
2929
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
30+
import org.apache.maven.execution.MavenSession;
3031
import org.apache.maven.model.Dependency;
3132
import org.apache.maven.plugin.MojoExecutionException;
3233
import org.apache.maven.plugin.MojoFailureException;
33-
import org.apache.maven.plugins.annotations.Component;
3434
import org.apache.maven.plugins.annotations.Parameter;
3535
import org.apache.maven.plugins.dependency.AbstractDependencyMojo;
3636
import org.apache.maven.plugins.dependency.utils.DependencyUtil;
@@ -42,6 +42,7 @@
4242
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolver;
4343
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException;
4444
import org.apache.maven.shared.transfer.repository.RepositoryManager;
45+
import org.sonatype.plexus.build.incremental.BuildContext;
4546

4647
/**
4748
* Abstract parent class used by mojos that get Artifact information from the plugin configuration as an ArrayList of
@@ -111,14 +112,24 @@ public abstract class AbstractFromConfigurationMojo extends AbstractDependencyMo
111112
@Parameter
112113
private File localRepositoryDirectory;
113114

114-
@Component
115-
private ArtifactResolver artifactResolver;
115+
private final ArtifactResolver artifactResolver;
116116

117-
@Component
118-
private RepositoryManager repositoryManager;
117+
private final RepositoryManager repositoryManager;
119118

120-
@Component
121-
private ArtifactHandlerManager artifactHandlerManager;
119+
private final ArtifactHandlerManager artifactHandlerManager;
120+
121+
protected AbstractFromConfigurationMojo(
122+
MavenSession session,
123+
BuildContext buildContext,
124+
MavenProject project,
125+
ArtifactResolver artifactResolver,
126+
RepositoryManager repositoryManager,
127+
ArtifactHandlerManager artifactHandlerManager) {
128+
super(session, buildContext, project);
129+
this.artifactResolver = artifactResolver;
130+
this.repositoryManager = repositoryManager;
131+
this.artifactHandlerManager = artifactHandlerManager;
132+
}
122133

123134
abstract ArtifactItemFilter getMarkedArtifactFilter(ArtifactItem item);
124135

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.util.List;
2626

2727
import org.apache.maven.artifact.Artifact;
28+
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
29+
import org.apache.maven.execution.MavenSession;
2830
import org.apache.maven.plugin.MojoExecutionException;
2931
import org.apache.maven.plugin.MojoFailureException;
3032
import org.apache.maven.plugins.annotations.LifecyclePhase;
@@ -33,6 +35,10 @@
3335
import org.apache.maven.plugins.dependency.utils.CopyUtil;
3436
import org.apache.maven.plugins.dependency.utils.filters.ArtifactItemFilter;
3537
import org.apache.maven.plugins.dependency.utils.filters.DestFileFilter;
38+
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;
41+
import org.sonatype.plexus.build.incremental.BuildContext;
3642

3743
/**
3844
* Goal that copies a list of artifacts from the repository to defined locations.
@@ -82,7 +88,15 @@ public class CopyMojo extends AbstractFromConfigurationMojo {
8288
private String artifact;
8389

8490
@Inject
85-
public CopyMojo(CopyUtil copyUtil) {
91+
public CopyMojo(
92+
MavenSession session,
93+
BuildContext buildContext,
94+
MavenProject project,
95+
ArtifactResolver artifactResolver,
96+
RepositoryManager repositoryManager,
97+
ArtifactHandlerManager artifactHandlerManager,
98+
CopyUtil copyUtil) {
99+
super(session, buildContext, project, artifactResolver, repositoryManager, artifactHandlerManager);
86100
this.copyUtil = copyUtil;
87101
}
88102

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import java.io.File;
2424
import java.util.List;
2525

26+
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
27+
import org.apache.maven.execution.MavenSession;
2628
import org.apache.maven.plugin.MojoExecutionException;
2729
import org.apache.maven.plugin.MojoFailureException;
2830
import org.apache.maven.plugins.annotations.LifecyclePhase;
@@ -33,7 +35,11 @@
3335
import org.apache.maven.plugins.dependency.utils.filters.MarkerFileFilter;
3436
import org.apache.maven.plugins.dependency.utils.markers.MarkerHandler;
3537
import org.apache.maven.plugins.dependency.utils.markers.UnpackFileMarkerHandler;
38+
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;
3641
import org.codehaus.plexus.components.io.filemappers.FileMapper;
42+
import org.sonatype.plexus.build.incremental.BuildContext;
3743

3844
/**
3945
* Goal that retrieves a list of artifacts from the repository and unpacks them in a defined location.
@@ -98,7 +104,15 @@ public class UnpackMojo extends AbstractFromConfigurationMojo {
98104
private String artifact;
99105

100106
@Inject
101-
public UnpackMojo(UnpackUtil unpackUtil) {
107+
public UnpackMojo(
108+
MavenSession session,
109+
BuildContext buildContext,
110+
MavenProject project,
111+
ArtifactResolver artifactResolver,
112+
RepositoryManager repositoryManager,
113+
ArtifactHandlerManager artifactHandlerManager,
114+
UnpackUtil unpackUtil) {
115+
super(session, buildContext, project, artifactResolver, repositoryManager, artifactHandlerManager);
102116
this.unpackUtil = unpackUtil;
103117
}
104118

src/main/java/org/apache/maven/plugins/dependency/fromDependencies/AbstractDependencyFilterMojo.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.apache.maven.plugins.dependency.fromDependencies;
2020

21+
import javax.inject.Inject;
22+
2123
import java.io.File;
2224
import java.util.ArrayList;
2325
import java.util.Collection;
@@ -27,6 +29,7 @@
2729
import org.apache.maven.RepositoryUtils;
2830
import org.apache.maven.artifact.Artifact;
2931
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
32+
import org.apache.maven.execution.MavenSession;
3033
import org.apache.maven.plugin.MojoExecutionException;
3134
import org.apache.maven.plugins.annotations.Parameter;
3235
import org.apache.maven.plugins.dependency.AbstractDependencyMojo;
@@ -50,6 +53,7 @@
5053
import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
5154
import org.apache.maven.shared.transfer.repository.RepositoryManager;
5255
import org.eclipse.aether.resolution.ArtifactResolutionException;
56+
import org.sonatype.plexus.build.incremental.BuildContext;
5357

5458
/**
5559
* Class that encapsulates the plugin parameters, and contains methods that handle dependency filtering
@@ -239,23 +243,30 @@ public abstract class AbstractDependencyFilterMojo extends AbstractDependencyMoj
239243

240244
private final ArtifactHandlerManager artifactHandlerManager;
241245

246+
@Inject
247+
// CHECKSTYLE_OFF: ParameterNumber
242248
protected AbstractDependencyFilterMojo(
249+
MavenSession session,
250+
BuildContext buildContext,
251+
MavenProject project,
243252
ResolverUtil resolverUtil,
244253
DependencyResolver dependencyResolver,
245254
RepositoryManager repositoryManager,
246255
ProjectBuilder projectBuilder,
247256
ArtifactHandlerManager artifactHandlerManager) {
257+
super(session, buildContext, project);
248258
this.resolverUtil = resolverUtil;
249259
this.dependencyResolver = dependencyResolver;
250260
this.repositoryManager = repositoryManager;
251261
this.projectBuilder = projectBuilder;
252262
this.artifactHandlerManager = artifactHandlerManager;
253263
}
264+
// CHECKSTYLE_ON: ParameterNumber
254265

255266
/**
256267
* Return an {@link ArtifactsFilter} indicating which artifacts must be filtered out.
257268
*
258-
* @return an {@link ArtifactsFilter} indicating which artifacts must be filtered out.
269+
* @return an {@link ArtifactsFilter} indicating which artifacts must be filtered out
259270
*/
260271
protected abstract ArtifactsFilter getMarkedArtifactFilter();
261272

src/main/java/org/apache/maven/plugins/dependency/fromDependencies/AbstractFromDependenciesMojo.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,14 @@
2121
import java.io.File;
2222

2323
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
24+
import org.apache.maven.execution.MavenSession;
2425
import org.apache.maven.plugins.annotations.Parameter;
2526
import org.apache.maven.plugins.dependency.utils.ResolverUtil;
27+
import org.apache.maven.project.MavenProject;
2628
import org.apache.maven.project.ProjectBuilder;
2729
import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
2830
import org.apache.maven.shared.transfer.repository.RepositoryManager;
31+
import org.sonatype.plexus.build.incremental.BuildContext;
2932

3033
/**
3134
* Abstract Parent class used by mojos that get Artifact information from the project dependencies.
@@ -111,17 +114,30 @@ public abstract class AbstractFromDependenciesMojo extends AbstractDependencyFil
111114
@Parameter(property = "mdep.failOnMissingClassifierArtifact", defaultValue = "false")
112115
protected boolean failOnMissingClassifierArtifact;
113116

117+
// CHECKSTYLE_OFF: ParameterNumber
114118
protected AbstractFromDependenciesMojo(
119+
MavenSession session,
120+
BuildContext buildContext,
121+
MavenProject project,
115122
ResolverUtil resolverUtil,
116123
DependencyResolver dependencyResolver,
117124
RepositoryManager repositoryManager,
118125
ProjectBuilder projectBuilder,
119126
ArtifactHandlerManager artifactHandlerManager) {
120-
super(resolverUtil, dependencyResolver, repositoryManager, projectBuilder, artifactHandlerManager);
127+
super(
128+
session,
129+
buildContext,
130+
project,
131+
resolverUtil,
132+
dependencyResolver,
133+
repositoryManager,
134+
projectBuilder,
135+
artifactHandlerManager);
121136
}
137+
// CHECKSTYLE_ON: ParameterNumber
122138

123139
/**
124-
* @return returns the outputDirectory
140+
* @return returns the output directory
125141
*/
126142
public File getOutputDirectory() {
127143
return this.outputDirectory;

0 commit comments

Comments
 (0)