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:
parent
80a89b7343
commit
88aa78f3b5
2 changed files with 187 additions and 2 deletions
|
@ -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}.
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue