JCRVLT-501 (almost) get rid of plexus-utils (#53)
remove unneeded Apache Commons dependencies
rely on Maven 3.1+ way of resolving artifacts
diff --git a/pom.xml b/pom.xml
index bd05a83..90652ba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -281,6 +281,17 @@
<url>scm:svn:https://svn.apache.org/repos/asf/jackrabbit/site/live/filevault-package-maven-plugin-archives/${project.version}</url>
</site>
</distributionManagement>
+
+ <dependencyManagement>
+ <dependencies>
+ <!-- manage to the version used by plexus-archiver, only used transitively -->
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <version>3.3.0</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
<!-- ====================================================================== -->
<!-- D E P E N D E N C I E S -->
@@ -333,11 +344,6 @@
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
- <artifactId>maven-compat</artifactId>
- <version>${maven.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>${maven.version}</version>
</dependency>
@@ -352,24 +358,13 @@
<version>4.2.3</version>
</dependency>
<dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- <version>3.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- <version>3.9</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.6</version>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-shared-utils</artifactId>
+ <version>3.3.3</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
- <version>18.0.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -386,19 +381,19 @@
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>biz.aQute.bndlib</artifactId>
- <version>3.3.0</version>
+ <version>5.2.0</version>
</dependency>
<!-- used in the CheckSignature mojo -->
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
- <version>1.16</version>
+ <version>1.19</version>
</dependency>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer</artifactId>
- <version>1.16</version>
+ <version>1.19</version>
</dependency>
<!-- class analyzer -->
@@ -428,12 +423,6 @@
</dependency>
<dependency>
- <groupId>org.apache.maven.shared</groupId>
- <artifactId>maven-shared-utils</artifactId>
- <version>3.3.3</version>
- </dependency>
-
- <dependency>
<groupId>org.eclipse.aether</groupId>
<artifactId>aether-api</artifactId>
<version>${aether.version}</version>
@@ -450,7 +439,6 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java
index 888bbd0..4708063 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.nio.file.Path;
import java.util.Collections;
+import java.util.List;
import java.util.Map;
import java.util.jar.JarFile;
@@ -27,9 +28,16 @@
import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
import org.apache.jackrabbit.vault.util.Constants;
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.Parameter;
import org.apache.maven.project.MavenProject;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.ArtifactRequest;
+import org.eclipse.aether.resolution.ArtifactResolutionException;
+import org.eclipse.aether.resolution.ArtifactResult;
import org.jetbrains.annotations.Nullable;
/**
@@ -221,6 +229,17 @@
return metaInfDirectory;
}
+ protected static File resolveArtifact(org.eclipse.aether.artifact.Artifact artifact, RepositorySystem repoSystem, RepositorySystemSession repoSession, List<RemoteRepository> repositories) throws MojoExecutionException {
+ ArtifactRequest req = new ArtifactRequest(artifact, repositories, null);
+ ArtifactResult resolutionResult;
+ try {
+ resolutionResult = repoSystem.resolveArtifact(repoSession, req);
+ return resolutionResult.getArtifact().getFile();
+ } catch( ArtifactResolutionException e ) {
+ throw new MojoExecutionException("Artifact " + artifact + " could not be resolved.", e);
+ }
+ }
+
Filters loadGeneratedFilterFile() throws IOException, ConfigurationException {
// load filters for further processing
Filters filters = new Filters();
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractSourceAndMetadataPackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractSourceAndMetadataPackageMojo.java
index cc74ad5..25bae89 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractSourceAndMetadataPackageMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractSourceAndMetadataPackageMojo.java
@@ -21,7 +21,7 @@
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.plugins.annotations.Parameter;
-import org.codehaus.plexus.util.DirectoryScanner;
+import org.apache.maven.shared.utils.io.DirectoryScanner;
/**
* Commons ancestor for all mojos dealing with package source files and meta data files
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/CheckSignatureMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/CheckSignatureMojo.java
index d0fe28b..f85533a 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/CheckSignatureMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/CheckSignatureMojo.java
@@ -19,6 +19,7 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -26,10 +27,6 @@
import java.util.Set;
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.AbstractArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -43,6 +40,10 @@
import org.codehaus.mojo.animal_sniffer.SignatureChecker;
import org.codehaus.mojo.animal_sniffer.maven.MavenLogger;
import org.codehaus.mojo.animal_sniffer.maven.Signature;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.repository.RemoteRepository;
/**
* Maven goal which checks the embedded libraries against a defined
@@ -63,7 +64,7 @@
private MavenProject project;
/**
- * list of embedded bundles
+ * list of embedded bundles to scan
*/
@Parameter
private Embedded[] embeddeds = new Embedded[0];
@@ -76,16 +77,20 @@
private boolean failOnMissingEmbed;
- /**
- */
@Component
- private ArtifactFactory artifactFactory;
+ private RepositorySystem repoSystem;
+
+ @Parameter( defaultValue = "${repositorySystemSession}", readonly = true, required = true )
+ private RepositorySystemSession repoSession;
+
+ @Parameter( defaultValue = "${project.remoteProjectRepositories}", readonly = true, required = true )
+ private List<RemoteRepository> repositories;
/**
* Project classpath.
*/
@Parameter(property = "project.compileClasspathElements", required = true, readonly = true)
- private List classpathElements;
+ private List<String> classpathElements;
/**
* Class names to ignore signatures for (wildcards accepted).
@@ -94,16 +99,6 @@
private String[] ignores;
/**
- */
- @Parameter(property = "localRepository", readonly = true)
- private ArtifactRepository localRepository;
-
- /**
- */
- @Component
- private ArtifactResolver resolver;
-
- /**
* Signature module to use.
*/
@Parameter
@@ -120,9 +115,8 @@
*/
private Set<String> buildPackageList() throws IOException {
ClassListBuilder plb = new ClassListBuilder(new MavenLogger(getLog()));
- for (Object classpathElement : classpathElements) {
- String path = (String) classpathElement;
- plb.process(new File(path));
+ for (String classpathElement : classpathElements) {
+ plb.process(new File(classpathElement));
}
return plb.getPackages();
}
@@ -140,9 +134,8 @@
try {
getLog().info("Checking unresolved references to " + signature);
- org.apache.maven.artifact.Artifact a = signature.createArtifact(artifactFactory);
-
- resolver.resolve(a, project.getRemoteArtifactRepositories(), localRepository);
+ org.eclipse.aether.artifact.Artifact artifact = new DefaultArtifact(signature.getGroupId(),signature.getArtifactId(), "signature", signature.getVersion());
+ File signatureFile = AbstractMetadataPackageMojo.resolveArtifact(artifact, repoSystem, repoSession, repositories);
// just check code from this module
final Set<String> ignoredPackages = buildPackageList();
@@ -159,20 +152,20 @@
getLog().debug(ignoredPackages.toString());
}
- final SignatureChecker signatureChecker = new SignatureChecker(new FileInputStream(a.getFile()),
- ignoredPackages, new MavenLogger(getLog()));
- signatureChecker.setCheckJars(true);
- signatureChecker.setSourcePath(Collections.singletonList(new File(project.getBuild().getSourceDirectory())));
- signatureChecker.process(getEmbeddeds().toArray(new File[0]));
+ try (InputStream signatureInput = new FileInputStream(signatureFile)) {
+ final SignatureChecker signatureChecker = new SignatureChecker(signatureInput,
+ ignoredPackages, new MavenLogger(getLog()));
+ signatureChecker.setCheckJars(true);
+ signatureChecker.setSourcePath(Collections.singletonList(new File(project.getBuild().getSourceDirectory())));
+ signatureChecker.process(getEmbeddeds().toArray(new File[0]));
- if (signatureChecker.isSignatureBroken()) {
- throw new MojoFailureException(
- "Signature errors found. Verify them and put @IgnoreJRERequirement on them.");
+ if (signatureChecker.isSignatureBroken()) {
+ throw new MojoFailureException(
+ "Signature errors found. Verify them and put @IgnoreJRERequirement on them.");
+ }
}
} catch (IOException e) {
throw new MojoExecutionException("Failed to check signatures", e);
- } catch (AbstractArtifactResolutionException e) {
- throw new MojoExecutionException("Failed to obtain signature: " + signature, e);
}
}
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
index e8c8886..e13e0ab 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
@@ -78,15 +78,12 @@
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.archiver.jar.ManifestException;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.StringUtils;
+import org.apache.maven.shared.utils.io.FileUtils;
+import org.apache.maven.shared.utils.io.IOUtil;
+import org.apache.maven.shared.utils.StringUtils;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
import org.sonatype.plexus.build.incremental.BuildContext;
import aQute.bnd.header.Attrs;
@@ -1233,13 +1230,6 @@
}
private File resolveArtifact(org.eclipse.aether.artifact.Artifact artifact) throws MojoExecutionException {
- ArtifactRequest req = new ArtifactRequest(artifact, this.repositories, null);
- ArtifactResult resolutionResult;
- try {
- resolutionResult = this.repoSystem.resolveArtifact( this.repoSession, req );
- return resolutionResult.getArtifact().getFile();
- } catch( ArtifactResolutionException e ) {
- throw new MojoExecutionException( "Artifact " + artifact + " could not be resolved.", e );
- }
+ return resolveArtifact(artifact, repoSystem, repoSession, repositories);
}
}
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependency.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependency.java
index ac1eae1..fa88841 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependency.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependency.java
@@ -30,7 +30,7 @@
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.util.StringUtils;
+import org.apache.maven.shared.utils.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
index fd298cb..d2c0190 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
@@ -54,8 +54,8 @@
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.shared.utils.io.DirectoryScanner;
import org.codehaus.plexus.util.AbstractScanner;
-import org.codehaus.plexus.util.DirectoryScanner;
import org.codehaus.plexus.util.Scanner;
/**
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
index d08df70..f0189b1 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
@@ -61,10 +61,10 @@
import org.codehaus.plexus.archiver.FileSet;
import org.codehaus.plexus.archiver.jar.ManifestException;
import org.codehaus.plexus.archiver.util.DefaultFileSet;
-import org.codehaus.plexus.util.DirectoryScanner;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.MatchPatterns;
-import org.codehaus.plexus.util.StringUtils;
+import org.apache.maven.shared.utils.io.DirectoryScanner;
+import org.apache.maven.shared.utils.io.FileUtils;
+import org.apache.maven.shared.utils.io.MatchPatterns;
+import org.apache.maven.shared.utils.StringUtils;
import org.jetbrains.annotations.NotNull;
/** Builds a content package. */
@@ -262,7 +262,7 @@
Path destFile = Paths.get(destFileName);
if ((destFile.startsWith(Constants.ROOT_DIR) && enableJcrRootFiltering) ||
(destFile.startsWith(Constants.META_INF) && enableMetaInfFiltering)) {
- MatchPatterns matchPatterns = MatchPatterns.from(filteredFilePatterns);
+ MatchPatterns matchPatterns = MatchPatterns.from(filteredFilePatterns.toArray(new String[0]));
if (filteredFilePatterns == null || matchPatterns.matches(sourceFile.toString(), true)) {
getLog().info("Apply filtering to " + getProjectRelativeFilePath(sourceFile));
Resource resource = new Resource();