From df173c4cfc5cf9d1ba95c2e6a2d6554acfa0ed56 Mon Sep 17 00:00:00 2001 From: Geert Bevin Date: Thu, 29 Aug 2024 07:59:33 -0400 Subject: [PATCH] Added ability to individually exclude sources and javadocs downloads for dependencies --- .../rife/bld/dependencies/Dependency.java | 29 +++++++++++++++++++ .../rife/bld/dependencies/DependencySet.java | 4 +-- .../rife/bld/operations/PurgeOperation.java | 4 +-- .../bld/operations/TestDownloadOperation.java | 13 +++------ .../bld/operations/TestPurgeOperation.java | 12 ++------ 5 files changed, 40 insertions(+), 22 deletions(-) diff --git a/src/main/java/rife/bld/dependencies/Dependency.java b/src/main/java/rife/bld/dependencies/Dependency.java index e926f6e..b03ab00 100644 --- a/src/main/java/rife/bld/dependencies/Dependency.java +++ b/src/main/java/rife/bld/dependencies/Dependency.java @@ -4,6 +4,7 @@ */ package rife.bld.dependencies; +import java.util.HashSet; import java.util.Objects; import java.util.regex.Pattern; @@ -46,6 +47,7 @@ public class Dependency { private final String type_; private final ExclusionSet exclusions_; private final Dependency parent_; + private final HashSet excludedClassifiers_; public Dependency(String groupId, String artifactId) { this(groupId, artifactId, null, null, null); @@ -82,6 +84,7 @@ public class Dependency { this.type_ = type; this.exclusions_ = (exclusions == null ? new ExclusionSet() : exclusions); this.parent_ = parent; + this.excludedClassifiers_ = new HashSet<>(); } private static final Pattern DEPENDENCY_PATTERN = Pattern.compile("^(?[^:@]+):(?[^:@]+)(?::(?[^:@]+)(?::(?[^:@]+))?)?(?:@(?[^:@]+))?$"); @@ -152,6 +155,28 @@ public class Dependency { return new Dependency(groupId_, artifactId_, version_, classifier, type_); } + /** + * Exclude the sources artifact from download operations. + * + * @return this dependency instance + * @since 2.1 + */ + public Dependency excludeSources() { + excludedClassifiers_.add(CLASSIFIER_SOURCES); + return this; + } + + /** + * Exclude the javadoc artifact from download operations. + * + * @return this dependency instance + * @since 2.1 + */ + public Dependency excludeJavadoc() { + excludedClassifiers_.add(CLASSIFIER_JAVADOC); + return this; + } + /** * Returns a filename that corresponds to the dependency information. * @@ -253,6 +278,10 @@ public class Dependency { return exclusions_; } + public HashSet excludedClassifiers() { + return excludedClassifiers_; + } + /** * Returns this dependency's {@code parent} dependency that created this * dependency (only for information purposes). diff --git a/src/main/java/rife/bld/dependencies/DependencySet.java b/src/main/java/rife/bld/dependencies/DependencySet.java index 9df7b4f..a81bb49 100644 --- a/src/main/java/rife/bld/dependencies/DependencySet.java +++ b/src/main/java/rife/bld/dependencies/DependencySet.java @@ -134,7 +134,7 @@ public class DependencySet extends AbstractSet implements Set implements Set { filenames = modules_names; } addTransferLocations(filenames, dependency); - if (preserveSources_) { + if (preserveSources_ && !dependency.excludedClassifiers().contains(CLASSIFIER_SOURCES)) { addTransferLocations(filenames, dependency.withClassifier(CLASSIFIER_SOURCES)); } - if (preserveJavadoc_) { + if (preserveJavadoc_ && !dependency.excludedClassifiers().contains(CLASSIFIER_JAVADOC)) { addTransferLocations(filenames, dependency.withClassifier(CLASSIFIER_JAVADOC)); } } diff --git a/src/test/java/rife/bld/operations/TestDownloadOperation.java b/src/test/java/rife/bld/operations/TestDownloadOperation.java index 022e00a..9defffa 100644 --- a/src/test/java/rife/bld/operations/TestDownloadOperation.java +++ b/src/test/java/rife/bld/operations/TestDownloadOperation.java @@ -240,10 +240,10 @@ public class TestDownloadOperation { .downloadSources(true); operation.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3,12,0))) - .include(new Module("org.json", "json", new VersionNumber(20240303))); + .include(new Module("org.json", "json", new VersionNumber(20240303)).excludeSources()); operation.dependencies().scope(Scope.provided) .include(new Dependency("commons-codec", "commons-codec", new VersionNumber(1,17,0))) - .include(new Module("com.google.zxing", "javase", new VersionNumber(3,5,3))); + .include(new Module("com.google.zxing", "javase", new VersionNumber(3,5,3)).excludeJavadoc()); operation.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4,4))) .include(new Module("org.postgresql", "postgresql", new VersionNumber(42,7,3))); @@ -252,7 +252,7 @@ public class TestDownloadOperation { .include(new Module("org.eclipse.jetty.ee10", "jetty-ee10-servlet", new VersionNumber(12,0,12))); operation.dependencies().scope(Scope.test) .include(new Dependency("org.apache.httpcomponents.client5", "httpclient5", new VersionNumber(5,2,1))) - .include(new Module("org.jsoup", "jsoup", new VersionNumber(1,18,1))); + .include(new Module("org.jsoup", "jsoup", new VersionNumber(1,18,1)).excludeSources().excludeJavadoc()); operation.execute(); @@ -299,8 +299,6 @@ public class TestDownloadOperation { /dir4/slf4j-simple-2.0.6.jar /dir5 /dir5/dir10 - /dir5/dir10/jsoup-1.18.1-javadoc.jar - /dir5/dir10/jsoup-1.18.1-sources.jar /dir5/dir10/jsoup-1.18.1.jar /dir5/httpclient5-5.2.1-javadoc.jar /dir5/httpclient5-5.2.1-sources.jar @@ -316,7 +314,6 @@ public class TestDownloadOperation { /dir5/slf4j-api-1.7.36.jar /dir6 /dir6/json-20240303-javadoc.jar - /dir6/json-20240303-sources.jar /dir6/json-20240303.jar /dir7 /dir7/core-3.5.3-javadoc.jar @@ -325,7 +322,6 @@ public class TestDownloadOperation { /dir7/jai-imageio-core-1.4.0-javadoc.jar /dir7/jai-imageio-core-1.4.0-sources.jar /dir7/jai-imageio-core-1.4.0.jar - /dir7/javase-3.5.3-javadoc.jar /dir7/javase-3.5.3-sources.jar /dir7/javase-3.5.3.jar /dir7/jcommander-1.82-javadoc.jar @@ -366,7 +362,7 @@ public class TestDownloadOperation { project.repositories().add(Repository.MAVEN_CENTRAL); project.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3,12,0))) - .include(new Module("org.json", "json", new VersionNumber(20240303))); + .include(new Module("org.json", "json", new VersionNumber(20240303)).excludeSources()); project.dependencies().scope(Scope.provided) .include(new Dependency("commons-codec", "commons-codec", new VersionNumber(1,17,0))) .include(new Module("com.google.zxing", "javase", new VersionNumber(3,5,3))); @@ -392,7 +388,6 @@ public class TestDownloadOperation { /lib/compile/commons-lang3-3.12.0-sources.jar /lib/compile/commons-lang3-3.12.0.jar /lib/compile/modules - /lib/compile/modules/json-20240303-sources.jar /lib/compile/modules/json-20240303.jar /lib/provided /lib/provided/commons-codec-1.17.0-sources.jar diff --git a/src/test/java/rife/bld/operations/TestPurgeOperation.java b/src/test/java/rife/bld/operations/TestPurgeOperation.java index e3c496b..bacc944 100644 --- a/src/test/java/rife/bld/operations/TestPurgeOperation.java +++ b/src/test/java/rife/bld/operations/TestPurgeOperation.java @@ -581,10 +581,10 @@ public class TestPurgeOperation { .preserveJavadoc(true); operation_purge.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3,12,0))) - .include(new Module("org.json", "json", new VersionNumber(20240303))); + .include(new Module("org.json", "json", new VersionNumber(20240303)).excludeSources()); operation_purge.dependencies().scope(Scope.provided) .include(new Dependency("commons-codec", "commons-codec", new VersionNumber(1,17,0))) - .include(new Module("com.google.zxing", "javase", new VersionNumber(3,5,3))); + .include(new Module("com.google.zxing", "javase", new VersionNumber(3,5,3)).excludeJavadoc()); operation_purge.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4,4))) .include(new Module("org.postgresql", "postgresql", new VersionNumber(42,7,3))); @@ -593,7 +593,7 @@ public class TestPurgeOperation { .include(new Module("org.eclipse.jetty.ee10", "jetty-ee10-servlet", new VersionNumber(12,0,12))); operation_purge.dependencies().scope(Scope.test) .include(new Dependency("org.apache.httpcomponents.client5", "httpclient5", new VersionNumber(5,2,1))) - .include(new Module("org.jsoup", "jsoup", new VersionNumber(1,18,1))); + .include(new Module("org.jsoup", "jsoup", new VersionNumber(1,18,1)).excludeSources().excludeJavadoc()); operation_purge.execute(); @@ -640,8 +640,6 @@ public class TestPurgeOperation { /dir4/slf4j-simple-2.0.6.jar /dir5 /dir5/dir10 - /dir5/dir10/jsoup-1.18.1-javadoc.jar - /dir5/dir10/jsoup-1.18.1-sources.jar /dir5/dir10/jsoup-1.18.1.jar /dir5/httpclient5-5.2.1-javadoc.jar /dir5/httpclient5-5.2.1-sources.jar @@ -657,7 +655,6 @@ public class TestPurgeOperation { /dir5/slf4j-api-1.7.36.jar /dir6 /dir6/json-20240303-javadoc.jar - /dir6/json-20240303-sources.jar /dir6/json-20240303.jar /dir7 /dir7/core-3.5.3-javadoc.jar @@ -666,7 +663,6 @@ public class TestPurgeOperation { /dir7/jai-imageio-core-1.4.0-javadoc.jar /dir7/jai-imageio-core-1.4.0-sources.jar /dir7/jai-imageio-core-1.4.0.jar - /dir7/javase-3.5.3-javadoc.jar /dir7/javase-3.5.3-sources.jar /dir7/javase-3.5.3.jar /dir7/jcommander-1.82-javadoc.jar @@ -719,7 +715,6 @@ public class TestPurgeOperation { /dir4/slf4j-simple-2.0.6.jar /dir5 /dir5/dir10 - /dir5/dir10/jsoup-1.18.1-sources.jar /dir5/dir10/jsoup-1.18.1.jar /dir5/httpclient5-5.2.1-sources.jar /dir5/httpclient5-5.2.1.jar @@ -730,7 +725,6 @@ public class TestPurgeOperation { /dir5/slf4j-api-1.7.36-sources.jar /dir5/slf4j-api-1.7.36.jar /dir6 - /dir6/json-20240303-sources.jar /dir6/json-20240303.jar /dir7 /dir7/core-3.5.3-sources.jar