This is an automated email from the ASF dual-hosted git repository.
elharo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-artifact-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new 09808ac Convert to Guice constructor injection (#74)
09808ac is described below
commit 09808ac8f046ad61ff69ea920b3f383365f66230
Author: Elliotte Rusty Harold <[email protected]>
AuthorDate: Fri Dec 13 11:48:56 2024 +0000
Convert to Guice constructor injection (#74)
* Prefer Guice constrcutor injection
---
pom.xml | 6 ++++
.../artifact/buildinfo/AbstractBuildinfoMojo.java | 39 +++++++++++++---------
.../plugins/artifact/buildinfo/BuildinfoMojo.java | 21 ++++++++++--
.../artifact/buildinfo/CheckBuildPlanMojo.java | 19 +++++++----
.../plugins/artifact/buildinfo/CompareMojo.java | 28 ++++++++++++----
.../buildinfo/DescribeBuildOutputMojo.java | 16 ++++++++-
6 files changed, 95 insertions(+), 34 deletions(-)
diff --git a/pom.xml b/pom.xml
index 69990c4..df8bf05 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,6 +148,12 @@
<artifactId>maven-plugin-annotations</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <version>1</version>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
diff --git
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
index 76f8678..952e5f5 100644
---
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
+++
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
@@ -43,7 +43,6 @@ import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.rtinfo.RuntimeInformation;
@@ -57,11 +56,6 @@ import org.eclipse.aether.artifact.Artifact;
* @since 3.2.0
*/
public abstract class AbstractBuildinfoMojo extends AbstractMojo {
- /**
- * The Maven project.
- */
- @Component
- protected MavenProject project;
/**
* Location of the generated buildinfo file.
@@ -109,12 +103,6 @@ public abstract class AbstractBuildinfoMojo extends
AbstractMojo {
@Parameter(property = "buildinfo.reproducible", defaultValue = "false")
private boolean reproducible;
- /**
- * The current build session instance. This is used for toolchain manager
API calls.
- */
- @Component
- protected MavenSession session;
-
/**
* Timestamp for reproducible output archive entries, either formatted as
ISO 8601
* <code>yyyy-MM-dd'T'HH:mm:ssXXX</code> or as an int representing seconds
since the epoch (like
@@ -136,11 +124,30 @@ public abstract class AbstractBuildinfoMojo extends
AbstractMojo {
/**
* To obtain a toolchain if possible.
*/
- @Component
- private ToolchainManager toolchainManager;
+ private final ToolchainManager toolchainManager;
+
+ protected final RuntimeInformation rtInformation;
+
+ /**
+ * The Maven project.
+ */
+ protected final MavenProject project;
- @Component
- protected RuntimeInformation rtInformation;
+ /**
+ * The current build session instance. This is used for toolchain manager
API calls.
+ */
+ protected final MavenSession session;
+
+ protected AbstractBuildinfoMojo(
+ ToolchainManager toolchainManager,
+ RuntimeInformation rtInformation,
+ MavenProject project,
+ MavenSession session) {
+ this.toolchainManager = toolchainManager;
+ this.rtInformation = rtInformation;
+ this.project = project;
+ this.session = session;
+ }
@Override
public void execute() throws MojoExecutionException {
diff --git
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildinfoMojo.java
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildinfoMojo.java
index 38a4b4e..8ceb512 100644
---
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildinfoMojo.java
+++
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildinfoMojo.java
@@ -18,14 +18,19 @@
*/
package org.apache.maven.plugins.artifact.buildinfo;
+import javax.inject.Inject;
+
import java.util.Map;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
+import org.apache.maven.rtinfo.RuntimeInformation;
+import org.apache.maven.toolchain.ToolchainManager;
import org.eclipse.aether.artifact.Artifact;
/**
@@ -44,8 +49,18 @@ public class BuildinfoMojo extends AbstractBuildinfoMojo {
/**
* Used for attaching the buildinfo file in the project.
*/
- @Component
- private MavenProjectHelper projectHelper;
+ private final MavenProjectHelper projectHelper;
+
+ @Inject
+ public BuildinfoMojo(
+ ToolchainManager toolchainManager,
+ RuntimeInformation runtimeInformation,
+ MavenProject project,
+ MavenSession session,
+ MavenProjectHelper projectHelper) {
+ super(toolchainManager, runtimeInformation, project, session);
+ this.projectHelper = projectHelper;
+ }
@Override
public void execute(Map<Artifact, String> artifacts) throws
MojoExecutionException {
diff --git
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CheckBuildPlanMojo.java
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CheckBuildPlanMojo.java
index 637fd12..00a2fab 100644
---
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CheckBuildPlanMojo.java
+++
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CheckBuildPlanMojo.java
@@ -18,6 +18,8 @@
*/
package org.apache.maven.plugins.artifact.buildinfo;
+import javax.inject.Inject;
+
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -34,7 +36,6 @@ import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
@@ -50,14 +51,11 @@ import org.eclipse.aether.version.VersionScheme;
*/
@Mojo(name = "check-buildplan", threadSafe = true, requiresProject = true)
public class CheckBuildPlanMojo extends AbstractMojo {
- @Component
- private MavenProject project;
+ private final MavenProject project;
- @Component
- private MavenSession session;
+ private final MavenSession session;
- @Component
- private LifecycleExecutor lifecycleExecutor;
+ private final LifecycleExecutor lifecycleExecutor;
/** Allow to specify which goals/phases will be used to calculate
execution plan. */
@Parameter(property = "check.buildplan.tasks", defaultValue = "deploy")
@@ -93,6 +91,13 @@ public class CheckBuildPlanMojo extends AbstractMojo {
private final VersionScheme versionScheme = new GenericVersionScheme();
+ @Inject
+ public CheckBuildPlanMojo(MavenProject project, MavenSession session,
LifecycleExecutor lifecycleExecutor) {
+ this.project = project;
+ this.session = session;
+ this.lifecycleExecutor = lifecycleExecutor;
+ }
+
protected MavenExecutionPlan calculateExecutionPlan() throws
MojoExecutionException {
try {
return lifecycleExecutor.calculateExecutionPlan(session, tasks);
diff --git
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
index 9cfd262..b7a4277 100644
--- a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
+++ b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
@@ -18,6 +18,8 @@
*/
package org.apache.maven.plugins.artifact.buildinfo;
+import javax.inject.Inject;
+
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
@@ -31,12 +33,14 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.rtinfo.RuntimeInformation;
import org.apache.maven.shared.utils.logging.MessageUtils;
+import org.apache.maven.toolchain.ToolchainManager;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
@@ -74,12 +78,6 @@ public class CompareMojo extends AbstractBuildinfoMojo {
@Parameter(property = "compare.aggregate.only", defaultValue = "false")
private boolean aggregateOnly;
- /**
- * The entry point to Maven Artifact Resolver, i.e. the component doing
all the work.
- */
- @Component
- private RepositorySystem repoSystem;
-
/**
* The current repository/network configuration of Maven.
*/
@@ -99,6 +97,22 @@ public class CompareMojo extends AbstractBuildinfoMojo {
@Parameter(property = "compare.fail", defaultValue = "true")
private boolean fail;
+ /**
+ * The entry point to Maven Artifact Resolver, i.e. the component doing
all the work.
+ */
+ private final RepositorySystem repoSystem;
+
+ @Inject
+ public CompareMojo(
+ ToolchainManager toolchainManager,
+ RuntimeInformation rtInformation,
+ MavenProject project,
+ MavenSession session,
+ RepositorySystem repoSystem) {
+ super(toolchainManager, rtInformation, project, session);
+ this.repoSystem = repoSystem;
+ }
+
@Override
public void execute(Map<Artifact, String> artifacts) throws
MojoExecutionException {
getLog().info("Checking against reference build from " + referenceRepo
+ "...");
diff --git
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/DescribeBuildOutputMojo.java
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/DescribeBuildOutputMojo.java
index 88f6681..ae7362f 100644
---
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/DescribeBuildOutputMojo.java
+++
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/DescribeBuildOutputMojo.java
@@ -18,6 +18,8 @@
*/
package org.apache.maven.plugins.artifact.buildinfo;
+import javax.inject.Inject;
+
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -35,22 +37,34 @@ import java.util.stream.Collectors;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.archiver.MavenArchiver;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.rtinfo.RuntimeInformation;
import org.apache.maven.shared.utils.logging.MessageUtils;
+import org.apache.maven.toolchain.ToolchainManager;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
/**
* Describe build output (experimental).
- * It is expected to be used aggregator used from CLI, ie run at root after
everything has run, but not bound to any build
+ * It is expected to be used aggregator used from CLI; that is, run at root
after everything has run, but not bound to any build
* phase, where it would be run at root before modules.
* @since 3.5.2
*/
@Mojo(name = "describe-build-output", aggregator = true, threadSafe = true)
public class DescribeBuildOutputMojo extends AbstractBuildinfoMojo {
+ @Inject
+ public DescribeBuildOutputMojo(
+ ToolchainManager toolchainManager,
+ RuntimeInformation rtInformation,
+ MavenProject project,
+ MavenSession session) {
+ super(toolchainManager, rtInformation, project, session);
+ }
+
@Override
public void execute() throws MojoExecutionException {
// super.execute(); // do not generate buildinfo, just reuse logic
from abstract class