mirror of
https://github.com/ethauvin/bld.git
synced 2025-04-25 08:17:11 -07:00
Added ability to individually exclude sources and javadocs downloads for dependencies
This commit is contained in:
parent
a07db3f94e
commit
df173c4cfc
5 changed files with 40 additions and 22 deletions
|
@ -4,6 +4,7 @@
|
||||||
*/
|
*/
|
||||||
package rife.bld.dependencies;
|
package rife.bld.dependencies;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@ -46,6 +47,7 @@ public class Dependency {
|
||||||
private final String type_;
|
private final String type_;
|
||||||
private final ExclusionSet exclusions_;
|
private final ExclusionSet exclusions_;
|
||||||
private final Dependency parent_;
|
private final Dependency parent_;
|
||||||
|
private final HashSet<String> excludedClassifiers_;
|
||||||
|
|
||||||
public Dependency(String groupId, String artifactId) {
|
public Dependency(String groupId, String artifactId) {
|
||||||
this(groupId, artifactId, null, null, null);
|
this(groupId, artifactId, null, null, null);
|
||||||
|
@ -82,6 +84,7 @@ public class Dependency {
|
||||||
this.type_ = type;
|
this.type_ = type;
|
||||||
this.exclusions_ = (exclusions == null ? new ExclusionSet() : exclusions);
|
this.exclusions_ = (exclusions == null ? new ExclusionSet() : exclusions);
|
||||||
this.parent_ = parent;
|
this.parent_ = parent;
|
||||||
|
this.excludedClassifiers_ = new HashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Pattern DEPENDENCY_PATTERN = Pattern.compile("^(?<groupId>[^:@]+):(?<artifactId>[^:@]+)(?::(?<version>[^:@]+)(?::(?<classifier>[^:@]+))?)?(?:@(?<type>[^:@]+))?$");
|
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_);
|
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.
|
* Returns a filename that corresponds to the dependency information.
|
||||||
*
|
*
|
||||||
|
@ -253,6 +278,10 @@ public class Dependency {
|
||||||
return exclusions_;
|
return exclusions_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HashSet<String> excludedClassifiers() {
|
||||||
|
return excludedClassifiers_;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns this dependency's {@code parent} dependency that created this
|
* Returns this dependency's {@code parent} dependency that created this
|
||||||
* dependency (only for information purposes).
|
* dependency (only for information purposes).
|
||||||
|
|
|
@ -166,7 +166,7 @@ public class DependencySet extends AbstractSet<Dependency> implements Set<Depend
|
||||||
|
|
||||||
if (classifiers != null) {
|
if (classifiers != null) {
|
||||||
for (var classifier : classifiers) {
|
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);
|
var classifier_artifact = new DependencyResolver(resolution, retriever, repositories, dependency.withClassifier(classifier)).transferIntoDirectory(transfer_directory);
|
||||||
if (classifier_artifact != null) {
|
if (classifier_artifact != null) {
|
||||||
result.add(classifier_artifact);
|
result.add(classifier_artifact);
|
||||||
|
|
|
@ -130,10 +130,10 @@ public class PurgeOperation extends AbstractOperation<PurgeOperation> {
|
||||||
filenames = modules_names;
|
filenames = modules_names;
|
||||||
}
|
}
|
||||||
addTransferLocations(filenames, dependency);
|
addTransferLocations(filenames, dependency);
|
||||||
if (preserveSources_) {
|
if (preserveSources_ && !dependency.excludedClassifiers().contains(CLASSIFIER_SOURCES)) {
|
||||||
addTransferLocations(filenames, dependency.withClassifier(CLASSIFIER_SOURCES));
|
addTransferLocations(filenames, dependency.withClassifier(CLASSIFIER_SOURCES));
|
||||||
}
|
}
|
||||||
if (preserveJavadoc_) {
|
if (preserveJavadoc_ && !dependency.excludedClassifiers().contains(CLASSIFIER_JAVADOC)) {
|
||||||
addTransferLocations(filenames, dependency.withClassifier(CLASSIFIER_JAVADOC));
|
addTransferLocations(filenames, dependency.withClassifier(CLASSIFIER_JAVADOC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -240,10 +240,10 @@ public class TestDownloadOperation {
|
||||||
.downloadSources(true);
|
.downloadSources(true);
|
||||||
operation.dependencies().scope(Scope.compile)
|
operation.dependencies().scope(Scope.compile)
|
||||||
.include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3,12,0)))
|
.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)
|
operation.dependencies().scope(Scope.provided)
|
||||||
.include(new Dependency("commons-codec", "commons-codec", new VersionNumber(1,17,0)))
|
.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)
|
operation.dependencies().scope(Scope.runtime)
|
||||||
.include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4,4)))
|
.include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4,4)))
|
||||||
.include(new Module("org.postgresql", "postgresql", new VersionNumber(42,7,3)));
|
.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)));
|
.include(new Module("org.eclipse.jetty.ee10", "jetty-ee10-servlet", new VersionNumber(12,0,12)));
|
||||||
operation.dependencies().scope(Scope.test)
|
operation.dependencies().scope(Scope.test)
|
||||||
.include(new Dependency("org.apache.httpcomponents.client5", "httpclient5", new VersionNumber(5,2,1)))
|
.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();
|
operation.execute();
|
||||||
|
|
||||||
|
@ -299,8 +299,6 @@ public class TestDownloadOperation {
|
||||||
/dir4/slf4j-simple-2.0.6.jar
|
/dir4/slf4j-simple-2.0.6.jar
|
||||||
/dir5
|
/dir5
|
||||||
/dir5/dir10
|
/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/dir10/jsoup-1.18.1.jar
|
||||||
/dir5/httpclient5-5.2.1-javadoc.jar
|
/dir5/httpclient5-5.2.1-javadoc.jar
|
||||||
/dir5/httpclient5-5.2.1-sources.jar
|
/dir5/httpclient5-5.2.1-sources.jar
|
||||||
|
@ -316,7 +314,6 @@ public class TestDownloadOperation {
|
||||||
/dir5/slf4j-api-1.7.36.jar
|
/dir5/slf4j-api-1.7.36.jar
|
||||||
/dir6
|
/dir6
|
||||||
/dir6/json-20240303-javadoc.jar
|
/dir6/json-20240303-javadoc.jar
|
||||||
/dir6/json-20240303-sources.jar
|
|
||||||
/dir6/json-20240303.jar
|
/dir6/json-20240303.jar
|
||||||
/dir7
|
/dir7
|
||||||
/dir7/core-3.5.3-javadoc.jar
|
/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-javadoc.jar
|
||||||
/dir7/jai-imageio-core-1.4.0-sources.jar
|
/dir7/jai-imageio-core-1.4.0-sources.jar
|
||||||
/dir7/jai-imageio-core-1.4.0.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-sources.jar
|
||||||
/dir7/javase-3.5.3.jar
|
/dir7/javase-3.5.3.jar
|
||||||
/dir7/jcommander-1.82-javadoc.jar
|
/dir7/jcommander-1.82-javadoc.jar
|
||||||
|
@ -366,7 +362,7 @@ public class TestDownloadOperation {
|
||||||
project.repositories().add(Repository.MAVEN_CENTRAL);
|
project.repositories().add(Repository.MAVEN_CENTRAL);
|
||||||
project.dependencies().scope(Scope.compile)
|
project.dependencies().scope(Scope.compile)
|
||||||
.include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3,12,0)))
|
.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)
|
project.dependencies().scope(Scope.provided)
|
||||||
.include(new Dependency("commons-codec", "commons-codec", new VersionNumber(1,17,0)))
|
.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)));
|
||||||
|
@ -392,7 +388,6 @@ public class TestDownloadOperation {
|
||||||
/lib/compile/commons-lang3-3.12.0-sources.jar
|
/lib/compile/commons-lang3-3.12.0-sources.jar
|
||||||
/lib/compile/commons-lang3-3.12.0.jar
|
/lib/compile/commons-lang3-3.12.0.jar
|
||||||
/lib/compile/modules
|
/lib/compile/modules
|
||||||
/lib/compile/modules/json-20240303-sources.jar
|
|
||||||
/lib/compile/modules/json-20240303.jar
|
/lib/compile/modules/json-20240303.jar
|
||||||
/lib/provided
|
/lib/provided
|
||||||
/lib/provided/commons-codec-1.17.0-sources.jar
|
/lib/provided/commons-codec-1.17.0-sources.jar
|
||||||
|
|
|
@ -581,10 +581,10 @@ public class TestPurgeOperation {
|
||||||
.preserveJavadoc(true);
|
.preserveJavadoc(true);
|
||||||
operation_purge.dependencies().scope(Scope.compile)
|
operation_purge.dependencies().scope(Scope.compile)
|
||||||
.include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3,12,0)))
|
.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)
|
operation_purge.dependencies().scope(Scope.provided)
|
||||||
.include(new Dependency("commons-codec", "commons-codec", new VersionNumber(1,17,0)))
|
.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)
|
operation_purge.dependencies().scope(Scope.runtime)
|
||||||
.include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4,4)))
|
.include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4,4)))
|
||||||
.include(new Module("org.postgresql", "postgresql", new VersionNumber(42,7,3)));
|
.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)));
|
.include(new Module("org.eclipse.jetty.ee10", "jetty-ee10-servlet", new VersionNumber(12,0,12)));
|
||||||
operation_purge.dependencies().scope(Scope.test)
|
operation_purge.dependencies().scope(Scope.test)
|
||||||
.include(new Dependency("org.apache.httpcomponents.client5", "httpclient5", new VersionNumber(5,2,1)))
|
.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();
|
operation_purge.execute();
|
||||||
|
|
||||||
|
@ -640,8 +640,6 @@ public class TestPurgeOperation {
|
||||||
/dir4/slf4j-simple-2.0.6.jar
|
/dir4/slf4j-simple-2.0.6.jar
|
||||||
/dir5
|
/dir5
|
||||||
/dir5/dir10
|
/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/dir10/jsoup-1.18.1.jar
|
||||||
/dir5/httpclient5-5.2.1-javadoc.jar
|
/dir5/httpclient5-5.2.1-javadoc.jar
|
||||||
/dir5/httpclient5-5.2.1-sources.jar
|
/dir5/httpclient5-5.2.1-sources.jar
|
||||||
|
@ -657,7 +655,6 @@ public class TestPurgeOperation {
|
||||||
/dir5/slf4j-api-1.7.36.jar
|
/dir5/slf4j-api-1.7.36.jar
|
||||||
/dir6
|
/dir6
|
||||||
/dir6/json-20240303-javadoc.jar
|
/dir6/json-20240303-javadoc.jar
|
||||||
/dir6/json-20240303-sources.jar
|
|
||||||
/dir6/json-20240303.jar
|
/dir6/json-20240303.jar
|
||||||
/dir7
|
/dir7
|
||||||
/dir7/core-3.5.3-javadoc.jar
|
/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-javadoc.jar
|
||||||
/dir7/jai-imageio-core-1.4.0-sources.jar
|
/dir7/jai-imageio-core-1.4.0-sources.jar
|
||||||
/dir7/jai-imageio-core-1.4.0.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-sources.jar
|
||||||
/dir7/javase-3.5.3.jar
|
/dir7/javase-3.5.3.jar
|
||||||
/dir7/jcommander-1.82-javadoc.jar
|
/dir7/jcommander-1.82-javadoc.jar
|
||||||
|
@ -719,7 +715,6 @@ public class TestPurgeOperation {
|
||||||
/dir4/slf4j-simple-2.0.6.jar
|
/dir4/slf4j-simple-2.0.6.jar
|
||||||
/dir5
|
/dir5
|
||||||
/dir5/dir10
|
/dir5/dir10
|
||||||
/dir5/dir10/jsoup-1.18.1-sources.jar
|
|
||||||
/dir5/dir10/jsoup-1.18.1.jar
|
/dir5/dir10/jsoup-1.18.1.jar
|
||||||
/dir5/httpclient5-5.2.1-sources.jar
|
/dir5/httpclient5-5.2.1-sources.jar
|
||||||
/dir5/httpclient5-5.2.1.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-sources.jar
|
||||||
/dir5/slf4j-api-1.7.36.jar
|
/dir5/slf4j-api-1.7.36.jar
|
||||||
/dir6
|
/dir6
|
||||||
/dir6/json-20240303-sources.jar
|
|
||||||
/dir6/json-20240303.jar
|
/dir6/json-20240303.jar
|
||||||
/dir7
|
/dir7
|
||||||
/dir7/core-3.5.3-sources.jar
|
/dir7/core-3.5.3-sources.jar
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue