2
0
Fork 0
mirror of https://github.com/ethauvin/bld.git synced 2025-04-25 16:27:11 -07:00

Include provided and test scopes in Dependency Tree operation.

This commit is contained in:
Geert Bevin 2023-08-27 19:41:22 -04:00
parent 80a89b7343
commit 88aa78f3b5
2 changed files with 187 additions and 2 deletions

View file

@ -10,8 +10,7 @@ import rife.bld.dependencies.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static rife.bld.dependencies.Scope.compile; import static rife.bld.dependencies.Scope.*;
import static rife.bld.dependencies.Scope.runtime;
/** /**
* Transitively generates a hierarchical tree of dependencies. * Transitively generates a hierarchical tree of dependencies.
@ -32,15 +31,23 @@ public class DependencyTreeOperation extends AbstractOperation<DependencyTreeOpe
*/ */
public void execute() { public void execute() {
var compile_tree = executeGenerateCompileDependencies(); var compile_tree = executeGenerateCompileDependencies();
var provided_tree = executeGenerateProvidedDependencies();
var runtime_tree = executeGenerateRuntimeDependencies(); var runtime_tree = executeGenerateRuntimeDependencies();
var test_tree = executeGenerateTestDependencies();
dependencyTree_.setLength(0); dependencyTree_.setLength(0);
dependencyTree_.append(compile_tree); dependencyTree_.append(compile_tree);
dependencyTree_.append(System.lineSeparator()); dependencyTree_.append(System.lineSeparator());
dependencyTree_.append(provided_tree);
dependencyTree_.append(System.lineSeparator());
dependencyTree_.append(runtime_tree); dependencyTree_.append(runtime_tree);
dependencyTree_.append(System.lineSeparator()); dependencyTree_.append(System.lineSeparator());
dependencyTree_.append(test_tree);
dependencyTree_.append(System.lineSeparator());
System.out.println(compile_tree); System.out.println(compile_tree);
System.out.println(provided_tree);
System.out.println(runtime_tree); System.out.println(runtime_tree);
System.out.println(test_tree);
} }
/** /**
@ -56,6 +63,19 @@ public class DependencyTreeOperation extends AbstractOperation<DependencyTreeOpe
return "compile:" + System.lineSeparator() + compile_tree; return "compile:" + System.lineSeparator() + compile_tree;
} }
/**
* Part of the {@link #execute} operation, generates the tree for the provided scope.
*
* @since 1.7.3
*/
protected String executeGenerateProvidedDependencies() {
var provided_tree = dependencies().scope(provided).generateTransitiveDependencyTree(artifactRetriever(), repositories(), compile, runtime);
if (provided_tree.isEmpty()) {
provided_tree = "no dependencies" + System.lineSeparator();
}
return "provided:" + System.lineSeparator() + provided_tree;
}
/** /**
* Part of the {@link #execute} operation, generates the tree for the runtime scope. * Part of the {@link #execute} operation, generates the tree for the runtime scope.
* *
@ -69,6 +89,19 @@ public class DependencyTreeOperation extends AbstractOperation<DependencyTreeOpe
return "runtime:" + System.lineSeparator() + runtime_tree; return "runtime:" + System.lineSeparator() + runtime_tree;
} }
/**
* Part of the {@link #execute} operation, generates the tree for the test scope.
*
* @since 1.7.3
*/
protected String executeGenerateTestDependencies() {
var test_tree = dependencies().scope(test).generateTransitiveDependencyTree(artifactRetriever(), repositories(), compile, runtime);
if (test_tree.isEmpty()) {
test_tree = "no dependencies" + System.lineSeparator();
}
return "test:" + System.lineSeparator() + test_tree;
}
/** /**
* Configures a dependency tree operation from a {@link BaseProject}. * Configures a dependency tree operation from a {@link BaseProject}.

View file

@ -109,10 +109,16 @@ public class TestDependencyTreeOperation {
com.google.zxing:javase:3.5.1 com.google.zxing:javase:3.5.1
com.google.zxing:core:3.5.1 com.google.zxing:core:3.5.1
com.beust:jcommander:1.82 com.beust:jcommander:1.82
provided:
no dependencies
runtime: runtime:
org.postgresql:postgresql:42.6.0 org.postgresql:postgresql:42.6.0
org.checkerframework:checker-qual:3.31.0 org.checkerframework:checker-qual:3.31.0
test:
no dependencies
""", tree); """, tree);
} finally { } finally {
@ -120,6 +126,74 @@ public class TestDependencyTreeOperation {
} }
} }
@Test
void testExecutionProvidedTest()
throws Exception {
var tmp = Files.createTempDirectory("test").toFile();
try {
var operation = new DependencyTreeOperation()
.repositories(List.of(Repository.MAVEN_CENTRAL));
operation.dependencies().scope(Scope.provided)
.include(new Dependency("org.jsoup", "jsoup", new VersionNumber(1,16,1)))
.include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5,0,0)))
.include(new Dependency("org.eclipse.jetty", "jetty-server", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-core", new VersionNumber(10,1,12)))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-jasper", new VersionNumber(10,1,12)))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
operation.dependencies().scope(Scope.test)
.include(new Dependency("org.jsoup", "jsoup", new VersionNumber(1,16,1)))
.include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5,0,0)))
.include(new Dependency("org.eclipse.jetty", "jetty-server", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
operation.execute();
var tree = operation.dependencyTree();
assertEquals("""
compile:
no dependencies
provided:
org.jsoup:jsoup:1.16.1
jakarta.servlet:jakarta.servlet-api:5.0.0
org.eclipse.jetty:jetty-server:11.0.15
org.eclipse.jetty:jetty-http:11.0.15
org.eclipse.jetty:jetty-util:11.0.15
org.eclipse.jetty:jetty-io:11.0.15
org.slf4j:slf4j-api:2.0.5
org.eclipse.jetty:jetty-servlet:11.0.15
org.eclipse.jetty:jetty-security:11.0.15
org.apache.tomcat.embed:tomcat-embed-core:10.1.12
org.apache.tomcat:tomcat-annotations-api:10.1.12
org.apache.tomcat.embed:tomcat-embed-jasper:10.1.12
org.apache.tomcat.embed:tomcat-embed-el:10.1.12
org.eclipse.jdt:ecj:3.33.0
net.imagej:ij:1.54d
runtime:
no dependencies
test:
org.jsoup:jsoup:1.16.1
jakarta.servlet:jakarta.servlet-api:5.0.0
org.eclipse.jetty:jetty-server:11.0.15
org.eclipse.jetty:jetty-http:11.0.15
org.eclipse.jetty:jetty-util:11.0.15
org.eclipse.jetty:jetty-io:11.0.15
org.slf4j:slf4j-api:2.0.5
org.eclipse.jetty:jetty-servlet:11.0.15
org.eclipse.jetty:jetty-security:11.0.15
net.imagej:ij:1.54d
""", tree);
} finally {
FileUtils.deleteDirectory(tmp);
}
}
static class TestProject extends WebProject { static class TestProject extends WebProject {
public TestProject(File tmp) { public TestProject(File tmp) {
workDirectory = tmp; workDirectory = tmp;
@ -184,14 +258,92 @@ public class TestDependencyTreeOperation {
com.google.zxing:javase:3.5.1 com.google.zxing:javase:3.5.1
com.google.zxing:core:3.5.1 com.google.zxing:core:3.5.1
com.beust:jcommander:1.82 com.beust:jcommander:1.82
provided:
no dependencies
runtime: runtime:
org.postgresql:postgresql:42.6.0 org.postgresql:postgresql:42.6.0
org.checkerframework:checker-qual:3.31.0 org.checkerframework:checker-qual:3.31.0
test:
no dependencies
""", tree); """, tree);
} finally { } finally {
FileUtils.deleteDirectory(tmp); FileUtils.deleteDirectory(tmp);
} }
} }
@Test
void testFromProjectProvidedTest()
throws Exception {
var tmp = Files.createTempDirectory("test").toFile();
try {
var project = new TestProject(tmp);
project.createProjectStructure();
project.repositories().add(Repository.MAVEN_CENTRAL);
project.dependencies().scope(Scope.provided)
.include(new Dependency("org.jsoup", "jsoup", new VersionNumber(1,16,1)))
.include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5,0,0)))
.include(new Dependency("org.eclipse.jetty", "jetty-server", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-core", new VersionNumber(10,1,12)))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-jasper", new VersionNumber(10,1,12)))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
project.dependencies().scope(Scope.test)
.include(new Dependency("org.jsoup", "jsoup", new VersionNumber(1,16,1)))
.include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5,0,0)))
.include(new Dependency("org.eclipse.jetty", "jetty-server", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
var operation = new DependencyTreeOperation()
.fromProject(project);
operation.execute();
var tree = operation.dependencyTree();
assertEquals("""
compile:
no dependencies
provided:
org.jsoup:jsoup:1.16.1
jakarta.servlet:jakarta.servlet-api:5.0.0
org.eclipse.jetty:jetty-server:11.0.15
org.eclipse.jetty:jetty-http:11.0.15
org.eclipse.jetty:jetty-util:11.0.15
org.eclipse.jetty:jetty-io:11.0.15
org.slf4j:slf4j-api:2.0.5
org.eclipse.jetty:jetty-servlet:11.0.15
org.eclipse.jetty:jetty-security:11.0.15
org.apache.tomcat.embed:tomcat-embed-core:10.1.12
org.apache.tomcat:tomcat-annotations-api:10.1.12
org.apache.tomcat.embed:tomcat-embed-jasper:10.1.12
org.apache.tomcat.embed:tomcat-embed-el:10.1.12
org.eclipse.jdt:ecj:3.33.0
net.imagej:ij:1.54d
runtime:
no dependencies
test:
org.jsoup:jsoup:1.16.1
jakarta.servlet:jakarta.servlet-api:5.0.0
org.eclipse.jetty:jetty-server:11.0.15
org.eclipse.jetty:jetty-http:11.0.15
org.eclipse.jetty:jetty-util:11.0.15
org.eclipse.jetty:jetty-io:11.0.15
org.slf4j:slf4j-api:2.0.5
org.eclipse.jetty:jetty-servlet:11.0.15
org.eclipse.jetty:jetty-security:11.0.15
net.imagej:ij:1.54d
""", tree);
} finally {
FileUtils.deleteDirectory(tmp);
}
}
} }