2
0
Fork 0
mirror of https://github.com/ethauvin/bld.git synced 2025-04-24 15:57:11 -07:00

Added ability to individually exclude sources and javadocs downloads for dependencies

This commit is contained in:
Geert Bevin 2024-08-29 07:59:33 -04:00
parent a07db3f94e
commit df173c4cfc
5 changed files with 40 additions and 22 deletions

View file

@ -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<String> 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("^(?<groupId>[^:@]+):(?<artifactId>[^:@]+)(?::(?<version>[^:@]+)(?::(?<classifier>[^:@]+))?)?(?:@(?<type>[^:@]+))?$");
@ -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<String> excludedClassifiers() {
return excludedClassifiers_;
}
/**
* Returns this dependency's {@code parent} dependency that created this
* dependency (only for information purposes).

View file

@ -134,7 +134,7 @@ public class DependencySet extends AbstractSet<Dependency> implements Set<Depend
* @param repositories the repositories to use for the download
* @param directory the directory to download the artifacts into
* @param modulesDirectory the directory to download the modules into
* @param classifiers the additional classifiers to transfer
* @param classifiers the additional classifiers to transfer
* @return the list of artifacts that were transferred successfully
* @throws DependencyTransferException when an error occurred during the transfer
* @since 2.1
@ -166,7 +166,7 @@ public class DependencySet extends AbstractSet<Dependency> implements Set<Depend
if (classifiers != null) {
for (var classifier : classifiers) {
if (classifier != null) {
if (classifier != null && !dependency.excludedClassifiers().contains(classifier)) {
var classifier_artifact = new DependencyResolver(resolution, retriever, repositories, dependency.withClassifier(classifier)).transferIntoDirectory(transfer_directory);
if (classifier_artifact != null) {
result.add(classifier_artifact);

View file

@ -130,10 +130,10 @@ public class PurgeOperation extends AbstractOperation<PurgeOperation> {
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));
}
}

View file

@ -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

View file

@ -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