This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-maven.git
The following commit(s) were added to refs/heads/main by this push:
new 11c57bc NIFI-15633 Addressed deprecations and switched to JSR-330
Annotations (#46)
11c57bc is described below
commit 11c57bcdb2defdca2e9afd808106c627d64e7936
Author: Pierre Villard <[email protected]>
AuthorDate: Mon Feb 23 15:08:34 2026 +0100
NIFI-15633 Addressed deprecations and switched to JSR-330 Annotations (#46)
Signed-off-by: David Handermann <[email protected]>
---
pom.xml | 20 ++++++++
.../apache/nifi/NarDuplicateDependenciesMojo.java | 8 +--
src/main/java/org/apache/nifi/NarMojo.java | 60 ++++++++++++----------
.../apache/nifi/NarProvidedDependenciesMojo.java | 15 ++----
.../org/apache/nifi/utils/NarDependencyUtils.java | 13 ++---
5 files changed, 66 insertions(+), 50 deletions(-)
diff --git a/pom.xml b/pom.xml
index b64e715..3af8a8a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -220,6 +220,20 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>sisu-maven-plugin</artifactId>
+ <version>1.0.0</version>
+ <executions>
+ <execution>
+ <id>index-project</id>
+ <goals>
+ <goal>main-index</goal>
+ <goal>test-index</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
@@ -310,6 +324,12 @@
<scope>provided</scope>
<version>3.15.2</version>
</dependency>
+ <dependency>
+ <groupId>jakarta.inject</groupId>
+ <artifactId>jakarta.inject-api</artifactId>
+ <version>1.0.5</version>
+ <scope>provided</scope>
+ </dependency>
<!-- Test Dependencies -->
<dependency>
<groupId>org.junit.jupiter</groupId>
diff --git a/src/main/java/org/apache/nifi/NarDuplicateDependenciesMojo.java
b/src/main/java/org/apache/nifi/NarDuplicateDependenciesMojo.java
index 7d1fce5..2808b12 100644
--- a/src/main/java/org/apache/nifi/NarDuplicateDependenciesMojo.java
+++ b/src/main/java/org/apache/nifi/NarDuplicateDependenciesMojo.java
@@ -22,7 +22,6 @@ import
org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-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;
@@ -39,6 +38,7 @@ import
org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
import org.apache.nifi.utils.NarDependencyUtils;
import org.eclipse.aether.RepositorySystemSession;
+import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -68,20 +68,20 @@ public class NarDuplicateDependenciesMojo extends
AbstractMojo {
/**
* The dependency tree builder to use for verbose output.
*/
- @Component
+ @Inject
private DependencyCollectorBuilder dependencyCollectorBuilder;
/**
* *
* The {@link ArtifactHandlerManager} into which any extension {@link
ArtifactHandler} instances should have been injected when the extensions were
loaded.
*/
- @Component
+ @Inject
private ArtifactHandlerManager artifactHandlerManager;
/**
* The {@link ProjectBuilder} used to generate the {@code MavenProject}
for the nar artifact the dependency tree is being generated for.
*/
- @Component
+ @Inject
private ProjectBuilder projectBuilder;
/*
diff --git a/src/main/java/org/apache/nifi/NarMojo.java
b/src/main/java/org/apache/nifi/NarMojo.java
index 830bea7..56f059d 100644
--- a/src/main/java/org/apache/nifi/NarMojo.java
+++ b/src/main/java/org/apache/nifi/NarMojo.java
@@ -20,7 +20,6 @@ import org.apache.maven.archiver.MavenArchiveConfiguration;
import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
-import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.installer.ArtifactInstaller;
@@ -33,7 +32,6 @@ import
org.apache.maven.artifact.resolver.DefaultArtifactResolver;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
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;
@@ -43,9 +41,11 @@ import
org.apache.maven.plugins.dependency.utils.DependencyUtil;
import org.apache.maven.plugins.dependency.utils.filters.DestFileFilter;
import
org.apache.maven.plugins.dependency.utils.translators.ArtifactTranslator;
import
org.apache.maven.plugins.dependency.utils.translators.ClassifierTypeTranslator;
+import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.apache.maven.project.ProjectBuilder;
+import org.apache.maven.repository.RepositorySystem;
import
org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException;
import org.apache.maven.shared.artifact.filter.collection.ArtifactIdFilter;
import org.apache.maven.shared.artifact.filter.collection.ArtifactsFilter;
@@ -66,12 +66,15 @@ import
org.apache.nifi.extension.definition.extraction.ExtensionDefinitionFactor
import
org.apache.nifi.extension.definition.extraction.StandardServiceAPIDefinition;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.jar.JarArchiver;
+import org.codehaus.plexus.archiver.util.DefaultFileSet;
import org.codehaus.plexus.archiver.jar.ManifestException;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.RepositorySystemSession;
+import javax.inject.Inject;
+import javax.inject.Named;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
@@ -86,18 +89,18 @@ import java.lang.reflect.Method;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Files;
-import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
-import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.TimeZone;
import java.util.TreeSet;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -122,7 +125,7 @@ public class NarMojo extends AbstractMojo {
private static final String[] DEFAULT_EXCLUDES = new
String[]{"**/package.html"};
private static final String[] DEFAULT_INCLUDES = new String[]{"**/**"};
- private static final String BUILD_TIMESTAMP_FORMAT =
"yyyy-MM-dd'T'HH:mm:ss'Z'";
+ private static final DateTimeFormatter BUILD_TIMESTAMP_FORMATTER =
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(ZoneOffset.UTC);
/**
* POM
@@ -156,7 +159,7 @@ public class NarMojo extends AbstractMojo {
*
* \@\component role="org.codehaus.plexus.archiver.Archiver" roleHint="jar"
*/
- @Component(role = org.codehaus.plexus.archiver.Archiver.class, hint =
"jar")
+ @Inject @Named("jar")
private JarArchiver jarArchiver;
/**
* The archive configuration to use.
@@ -185,7 +188,7 @@ public class NarMojo extends AbstractMojo {
@Parameter(property = "nar.useDefaultManifestFile", defaultValue = "false")
protected boolean useDefaultManifestFile;
- @Component
+ @Inject
protected MavenProjectHelper projectHelper;
/**
@@ -203,10 +206,10 @@ public class NarMojo extends AbstractMojo {
@Parameter(property = "classifier")
protected String classifier;
- @Component
+ @Inject
protected ArtifactInstaller installer;
- @Component
+ @Inject
protected ArtifactRepositoryFactory repositoryFactory;
/**
@@ -339,14 +342,14 @@ public class NarMojo extends AbstractMojo {
/**
* Used to look up Artifacts in the remote repository.
*/
- @Component
- protected ArtifactFactory factory;
+ @Inject
+ protected RepositorySystem repositorySystem;
/**
* Used to look up Artifacts in the remote repository.
*
*/
- @Component
+ @Inject
protected ArtifactResolver resolver;
/**
@@ -367,7 +370,7 @@ public class NarMojo extends AbstractMojo {
* To look up Archiver/UnArchiver implementations
*
*/
- @Component
+ @Inject
protected ArchiverManager archiverManager;
/**
@@ -387,14 +390,14 @@ public class NarMojo extends AbstractMojo {
/**
* The dependency tree builder to use for verbose output.
*/
- @Component
+ @Inject
private DependencyGraphBuilder dependencyGraphBuilder;
/**
* *
* The {@link ArtifactHandlerManager} into which any extension {@link
ArtifactHandler} instances should have been injected when the extensions were
loaded.
*/
- @Component
+ @Inject
private ArtifactHandlerManager artifactHandlerManager;
@@ -484,7 +487,7 @@ public class NarMojo extends AbstractMojo {
/**
* The {@link ProjectBuilder} used to generate the {@code MavenProject}
for the nar artifact the dependency tree is being generated for.
*/
- @Component
+ @Inject
private ProjectBuilder projectBuilder;
/**
@@ -1028,7 +1031,7 @@ public class NarMojo extends AbstractMojo {
}
protected Artifact getResolvedPomArtifact(Artifact artifact) {
- Artifact pomArtifact =
this.factory.createArtifact(artifact.getGroupId(), artifact.getArtifactId(),
artifact.getVersion(), "", "pom");
+ Artifact pomArtifact =
this.repositorySystem.createArtifact(artifact.getGroupId(),
artifact.getArtifactId(), artifact.getVersion(), "pom");
// Resolve the pom artifact using repos
ArtifactResolutionRequest artifactResolutionRequest =
getArtifactResolutionRequest(pomArtifact);
ArtifactResolutionResult artifactResolutionResult =
this.resolver.resolve(artifactResolutionRequest);
@@ -1061,7 +1064,13 @@ public class NarMojo extends AbstractMojo {
// add filters in well known order, least specific to most specific
FilterArtifacts filter = new FilterArtifacts();
- filter.addFilter(new
ProjectTransitivityFilter(project.getDependencyArtifacts(), false));
+ final Set<String> directDependencyKeys =
project.getDependencies().stream()
+ .map(d -> d.getGroupId() + ":" + d.getArtifactId())
+ .collect(Collectors.toSet());
+ final Set<Artifact> directArtifacts = project.getArtifacts().stream()
+ .filter(a -> directDependencyKeys.contains(a.getGroupId() +
":" + a.getArtifactId()))
+ .collect(Collectors.toSet());
+ filter.addFilter(new ProjectTransitivityFilter(directArtifacts,
false));
filter.addFilter(new ScopeFilter(this.includeScope,
this.excludeScope));
filter.addFilter(new TypeFilter(this.includeTypes, this.excludeTypes));
filter.addFilter(new ClassifierFilter(this.includeClassifiers,
this.excludeClassifiers));
@@ -1189,13 +1198,13 @@ public class NarMojo extends AbstractMojo {
archiver.setCreatedBy("Apache NiFi Nar Maven Plugin",
"org.apache.nifi", "nifi-nar-maven-plugin");
archiver.setArchiver(jarArchiver);
archiver.setOutputFile(narFile);
- Date timestamp = archiver.configureReproducible(outputTimestamp); //
configure for Reproducible Builds based on outputTimestamp value
+ archiver.configureReproducibleBuild(outputTimestamp);
archive.setForced(forceCreation);
try {
File contentDirectory = getClassesDirectory();
if (contentDirectory.exists()) {
- archiver.getArchiver().addDirectory(contentDirectory,
getIncludes(), getExcludes());
+
archiver.getArchiver().addFileSet(DefaultFileSet.fileSet(contentDirectory).include(getIncludes()).exclude(getExcludes()));
} else {
getLog().warn("NAR will be empty - no content was marked for
inclusion!");
}
@@ -1209,12 +1218,12 @@ public class NarMojo extends AbstractMojo {
File additionalDetailsDirectory = new
File(extensionDocsFile.getParentFile(), "additional-details");
if (additionalDetailsDirectory.exists()) {
-
archiver.getArchiver().addDirectory(additionalDetailsDirectory,
"META-INF/docs/additional-details/");
+
archiver.getArchiver().addFileSet(DefaultFileSet.fileSet(additionalDetailsDirectory).prefixed("META-INF/docs/additional-details/"));
}
File stepDocumentationDirectory = new
File(extensionDocsFile.getParentFile(), "steps");
if (stepDocumentationDirectory.exists()) {
-
archiver.getArchiver().addDirectory(stepDocumentationDirectory,
"META-INF/docs/steps/");
+
archiver.getArchiver().addFileSet(DefaultFileSet.fileSet(stepDocumentationDirectory).prefixed("META-INF/docs/steps/"));
}
File existingManifest = defaultManifestFile;
@@ -1252,9 +1261,8 @@ public class NarMojo extends AbstractMojo {
archive.addManifestEntry("Build-Revision", buildRevision);
}
- SimpleDateFormat dateFormat = new
SimpleDateFormat(BUILD_TIMESTAMP_FORMAT);
- dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
- archive.addManifestEntry("Build-Timestamp",
dateFormat.format(timestamp == null ? new Date() : timestamp));
+ final Instant buildTimestamp =
MavenArchiver.parseBuildOutputTimestamp(outputTimestamp).orElse(Instant.now());
+ archive.addManifestEntry("Build-Timestamp",
BUILD_TIMESTAMP_FORMATTER.format(buildTimestamp));
archive.addManifestEntry("Clone-During-Instance-Class-Loading",
String.valueOf(cloneDuringInstanceClassLoading));
diff --git a/src/main/java/org/apache/nifi/NarProvidedDependenciesMojo.java
b/src/main/java/org/apache/nifi/NarProvidedDependenciesMojo.java
index e70da0e..beb25d8 100644
--- a/src/main/java/org/apache/nifi/NarProvidedDependenciesMojo.java
+++ b/src/main/java/org/apache/nifi/NarProvidedDependenciesMojo.java
@@ -19,11 +19,9 @@ package org.apache.nifi;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-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;
@@ -40,6 +38,7 @@ import
org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
import org.apache.nifi.utils.NarDependencyUtils;
import org.eclipse.aether.RepositorySystemSession;
+import javax.inject.Inject;
import java.util.ArrayDeque;
import java.util.Deque;
@@ -57,12 +56,6 @@ public class NarProvidedDependenciesMojo extends
AbstractMojo {
@Parameter(defaultValue = "${project}", readonly = true, required = true)
private MavenProject project;
- /**
- * The local artifact repository.
- */
- @Parameter(defaultValue = "${localRepository}", readonly = true)
- private ArtifactRepository localRepository;
-
/**
* The {@link RepositorySystemSession} used for obtaining the local and
remote artifact repositories.
*/
@@ -79,20 +72,20 @@ public class NarProvidedDependenciesMojo extends
AbstractMojo {
/**
* The dependency tree builder to use for verbose output.
*/
- @Component
+ @Inject
private DependencyGraphBuilder dependencyGraphBuilder;
/**
* *
* The {@link ArtifactHandlerManager} into which any extension {@link
ArtifactHandler} instances should have been injected when the extensions were
loaded.
*/
- @Component
+ @Inject
private ArtifactHandlerManager artifactHandlerManager;
/**
* The {@link ProjectBuilder} used to generate the {@code MavenProject}
for the nar artifact the dependency tree is being generated for.
*/
- @Component
+ @Inject
private ProjectBuilder projectBuilder;
/*
diff --git a/src/main/java/org/apache/nifi/utils/NarDependencyUtils.java
b/src/main/java/org/apache/nifi/utils/NarDependencyUtils.java
index d98e75f..7a1bde4 100644
--- a/src/main/java/org/apache/nifi/utils/NarDependencyUtils.java
+++ b/src/main/java/org/apache/nifi/utils/NarDependencyUtils.java
@@ -18,12 +18,13 @@ package org.apache.nifi.utils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.project.ProjectBuildingResult;
-import org.apache.maven.project.ProjectBuildingException;
import java.util.HashMap;
import java.util.Map;
@@ -54,21 +55,15 @@ public class NarDependencyUtils {
}
public static void ensureSingleNarDependencyExists(MavenProject project)
throws MojoExecutionException {
- // find the nar dependency
boolean found = false;
- for (final Artifact artifact : project.getDependencyArtifacts()) {
- if (NAR.equals(artifact.getType())) {
- // ensure the project doesn't have two nar dependencies
+ for (final Dependency dependency : project.getDependencies()) {
+ if (NAR.equals(dependency.getType())) {
if (found) {
throw new MojoExecutionException("Project can only have
one NAR dependency.");
}
-
- // record the nar dependency
found = true;
}
}
-
- // ensure there is a nar dependency
if (!found) {
throw new MojoExecutionException("Project does not have any NAR
dependencies.");
}