Commit f2c93eec authored by Brian Long's avatar Brian Long
Browse files

added version range config support

parent 51f5d6d0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@

	<groupId>com.inteligr8</groupId>
	<artifactId>ban-maven-plugin</artifactId>
	<version>1.0-SNAPSHOT</version>
	<version>1.3-SNAPSHOT</version>
	<packaging>maven-plugin</packaging>

	<name>Ban Dependencies Maven Plugin</name>
+29 −9
Original line number Diff line number Diff line
@@ -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;

@@ -48,11 +53,13 @@ public abstract class AbstractBanConfiguration implements BanConfiguration {
    protected final List<ArtifactFilter> 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);
                    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 could not be resolved; skipping: {}", child.getValue());
                            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());
                }
            }
            
+5 −4
Original line number Diff line number Diff line
@@ -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);
+3 −2
Original line number Diff line number Diff line
@@ -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);
+5 −1
Original line number Diff line number Diff line
@@ -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());
            }
Loading