diff --git a/pom.xml b/pom.xml
index 855902d..11b50e4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
com.inteligr8
ban-maven-plugin
- 1.0-SNAPSHOT
+ 1.3-SNAPSHOT
maven-plugin
Ban Dependencies Maven Plugin
diff --git a/src/main/java/com/inteligr8/maven/ban/AbstractBanConfiguration.java b/src/main/java/com/inteligr8/maven/ban/AbstractBanConfiguration.java
index 14d7753..29bddea 100644
--- a/src/main/java/com/inteligr8/maven/ban/AbstractBanConfiguration.java
+++ b/src/main/java/com/inteligr8/maven/ban/AbstractBanConfiguration.java
@@ -30,9 +30,14 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.impl.ArtifactResolver;
+import org.eclipse.aether.impl.VersionRangeResolver;
import org.eclipse.aether.resolution.ArtifactRequest;
import org.eclipse.aether.resolution.ArtifactResolutionException;
import org.eclipse.aether.resolution.ArtifactResult;
+import org.eclipse.aether.resolution.VersionRangeRequest;
+import org.eclipse.aether.resolution.VersionRangeResolutionException;
+import org.eclipse.aether.resolution.VersionRangeResult;
+import org.eclipse.aether.version.Version;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,13 +51,15 @@ public abstract class AbstractBanConfiguration implements BanConfiguration {
protected final List includeArtifacts = new LinkedList<>();
protected final List excludeArtifacts = new LinkedList<>();
-
+
private final ArtifactResolver artifactResolver;
+ private final VersionRangeResolver versionRangeResolver;
private final MavenSession session;
- public AbstractBanConfiguration(MavenSession session, ArtifactResolver artifactResolver) {
+ public AbstractBanConfiguration(MavenSession session, ArtifactResolver artifactResolver, VersionRangeResolver versionRangeResolver) {
this.session = session;
this.artifactResolver = artifactResolver;
+ this.versionRangeResolver = versionRangeResolver;
}
public void init(Xpp3Dom rootDom) throws IOException, MojoFailureException {
@@ -70,19 +77,32 @@ public abstract class AbstractBanConfiguration implements BanConfiguration {
BanConfigurationDownloader downloader = null;
if (child.getName().equals("url")) {
String url = StringUtils.trimToNull(child.getValue());
- downloader = new BanConfigurationDownloader(this.session, this.artifactResolver, url);
+ downloader = new BanConfigurationDownloader(this.session, this.artifactResolver, this.versionRangeResolver, url);
} else if (child.getName().equals("artifact")) {
Artifact artifact = new DefaultArtifact(child.getValue());
if (!"xml".equals(artifact.getExtension()))
artifact = new DefaultArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getClassifier(), "xml", artifact.getVersion());
- ArtifactRequest request = new ArtifactRequest(artifact, this.session.getCurrentProject().getRemoteProjectRepositories(), null);
+ VersionRangeRequest vrrequest = new VersionRangeRequest(artifact, this.session.getCurrentProject().getRemoteProjectRepositories(), null);
try {
- ArtifactResult result = this.artifactResolver.resolveArtifact(this.session.getRepositorySession(), request);
- File file = result.getArtifact().getFile();
- downloader = new BanConfigurationDownloader(this.session, this.artifactResolver, file);
- } catch (ArtifactResolutionException are) {
- this.logger.warn("The artifact could not be resolved; skipping: {}", child.getValue());
+ VersionRangeResult vrresult = this.versionRangeResolver.resolveVersionRange(this.session.getRepositorySession(), vrrequest);
+ if (vrresult.getVersions().isEmpty()) {
+ this.logger.error("The artifact version range could not be resolved; skipping: {}", child.getValue());
+ } else {
+ Version version = vrresult.getHighestVersion();
+ artifact.setVersion(version.toString());
+
+ ArtifactRequest arequest = new ArtifactRequest(artifact, this.session.getCurrentProject().getRemoteProjectRepositories(), null);
+ try {
+ ArtifactResult aresult = this.artifactResolver.resolveArtifact(this.session.getRepositorySession(), arequest);
+ File file = aresult.getArtifact().getFile();
+ downloader = new BanConfigurationDownloader(this.session, this.artifactResolver, this.versionRangeResolver, file);
+ } catch (ArtifactResolutionException are) {
+ this.logger.warn("The artifact version could not be resolved; skipping: {} | {}", child.getValue(), version);
+ }
+ }
+ } catch (VersionRangeResolutionException vrre) {
+ this.logger.error("The artifact version range could not be resolved; skipping: {}", child.getValue());
}
}
diff --git a/src/main/java/com/inteligr8/maven/ban/BanConfigurationDownloader.java b/src/main/java/com/inteligr8/maven/ban/BanConfigurationDownloader.java
index 82bb5a7..ff55ce3 100644
--- a/src/main/java/com/inteligr8/maven/ban/BanConfigurationDownloader.java
+++ b/src/main/java/com/inteligr8/maven/ban/BanConfigurationDownloader.java
@@ -27,6 +27,7 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.eclipse.aether.impl.ArtifactResolver;
+import org.eclipse.aether.impl.VersionRangeResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,8 +35,8 @@ public class BanConfigurationDownloader extends AbstractBanConfiguration {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
- public BanConfigurationDownloader(MavenSession session, ArtifactResolver artifactResolver, String url) throws IOException, MojoFailureException {
- super(session, artifactResolver);
+ public BanConfigurationDownloader(MavenSession session, ArtifactResolver artifactResolver, VersionRangeResolver versionRangeResolver, String url) throws IOException, MojoFailureException {
+ super(session, artifactResolver, versionRangeResolver);
try {
Xpp3Dom rootDom = this.load(new URL(url));
@@ -45,8 +46,8 @@ public class BanConfigurationDownloader extends AbstractBanConfiguration {
}
}
- public BanConfigurationDownloader(MavenSession session, ArtifactResolver artifactResolver, File file) throws IOException, MojoFailureException {
- super(session, artifactResolver);
+ public BanConfigurationDownloader(MavenSession session, ArtifactResolver artifactResolver, VersionRangeResolver versionRangeResolver, File file) throws IOException, MojoFailureException {
+ super(session, artifactResolver, versionRangeResolver);
try {
Xpp3Dom rootDom = this.load(file);
diff --git a/src/main/java/com/inteligr8/maven/ban/BanConfigurationParser.java b/src/main/java/com/inteligr8/maven/ban/BanConfigurationParser.java
index 9b89d56..a9646df 100644
--- a/src/main/java/com/inteligr8/maven/ban/BanConfigurationParser.java
+++ b/src/main/java/com/inteligr8/maven/ban/BanConfigurationParser.java
@@ -21,11 +21,12 @@ import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.MojoFailureException;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.eclipse.aether.impl.ArtifactResolver;
+import org.eclipse.aether.impl.VersionRangeResolver;
public class BanConfigurationParser extends AbstractBanConfiguration {
- public BanConfigurationParser(MavenSession session, ArtifactResolver artifactResolver, Plugin plugin) throws IOException, MojoFailureException {
- super(session, artifactResolver);
+ public BanConfigurationParser(MavenSession session, ArtifactResolver artifactResolver, VersionRangeResolver versionRangeResolver, Plugin plugin) throws IOException, MojoFailureException {
+ super(session, artifactResolver, versionRangeResolver);
Xpp3Dom rootDom = (Xpp3Dom) plugin.getConfiguration();
this.init(rootDom);
diff --git a/src/main/java/com/inteligr8/maven/ban/BanExtension.java b/src/main/java/com/inteligr8/maven/ban/BanExtension.java
index 3090b57..b2133d7 100644
--- a/src/main/java/com/inteligr8/maven/ban/BanExtension.java
+++ b/src/main/java/com/inteligr8/maven/ban/BanExtension.java
@@ -40,6 +40,7 @@ import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.graph.DependencyFilter;
import org.eclipse.aether.graph.DependencyNode;
import org.eclipse.aether.impl.ArtifactResolver;
+import org.eclipse.aether.impl.VersionRangeResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,6 +57,9 @@ public class BanExtension extends AbstractMavenLifecycleParticipant {
@Inject
private ArtifactResolver artifactResolver;
+ @Inject
+ private VersionRangeResolver versionRangeResolver;
+
@Inject
private ProjectDependenciesResolver projDepResolver;
@@ -113,7 +117,7 @@ public class BanExtension extends AbstractMavenLifecycleParticipant {
return null;
} else {
try {
- return new BanConfigurationParser(session, this.artifactResolver, plugin);
+ return new BanConfigurationParser(session, this.artifactResolver, this.versionRangeResolver, plugin);
} catch (IOException | MojoFailureException e) {
throw new MavenExecutionException(e.getMessage(), project.getFile());
}
diff --git a/src/main/java/com/inteligr8/maven/ban/PurgeRepoMojo.java b/src/main/java/com/inteligr8/maven/ban/PurgeRepoMojo.java
index 2ba8e9e..29eb45b 100644
--- a/src/main/java/com/inteligr8/maven/ban/PurgeRepoMojo.java
+++ b/src/main/java/com/inteligr8/maven/ban/PurgeRepoMojo.java
@@ -46,6 +46,7 @@ import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.component.annotations.Component;
import org.eclipse.aether.impl.ArtifactResolver;
+import org.eclipse.aether.impl.VersionRangeResolver;
import com.inteligr8.maven.model.ArtifactFilter;
@@ -59,6 +60,9 @@ public class PurgeRepoMojo extends AbstractMojo {
@Inject
private ArtifactResolver artifactResolver;
+ @Inject
+ private VersionRangeResolver versionRangeResolver;
+
@Parameter(name = "skip", defaultValue = "false")
private boolean skip = false;
@@ -172,7 +176,7 @@ public class PurgeRepoMojo extends AbstractMojo {
Plugin plugin = project.getPlugin(BanExtension.THIS_PLUGIN_KEY);
if (plugin == null)
throw new MojoFailureException("The plugin is executing but it cannot be found");
- return new BanConfigurationParser(this.session, this.artifactResolver, plugin);
+ return new BanConfigurationParser(this.session, this.artifactResolver, this.versionRangeResolver, plugin);
}
private Path resolveGroupPath(ArtifactFilter afilter) {