From af6525acfaf5e79df85202823ef8f25fb7e15aa6 Mon Sep 17 00:00:00 2001 From: Geert Bevin Date: Sat, 6 Jan 2024 23:28:30 -0500 Subject: [PATCH] Provided scope dependencies are now stored in a separate directory and are only added to compile and test classpaths, but are not included for any runtime or distribution contexts. --- .idea/libraries/compile.xml | 4 + .idea/libraries/test.xml | 4 + src/main/java/rife/bld/BaseProject.java | 42 ++- .../bld/dependencies/DependencyScopes.java | 19 +- .../bld/operations/DownloadOperation.java | 34 ++ .../rife/bld/operations/PurgeOperation.java | 34 ++ src/main/resources/BLD_VERSION | 2 +- .../bld/base/idea/libraries/compile.xml | 4 + .../bld/base/idea/libraries/test.xml | 4 + .../templates/bld/base/vscode/settings.json | 1 + .../bld/blank/idea/libraries/compile.xml | 4 + .../bld/blank/idea/libraries/test.xml | 4 + .../templates/bld/blank/vscode/settings.json | 1 + .../bld/lib/idea/libraries/compile.xml | 4 + .../templates/bld/lib/idea/libraries/test.xml | 4 + .../templates/bld/lib/vscode/settings.json | 1 + .../rife2_hello/idea/libraries/compile.xml | 4 + .../bld/rife2_hello/idea/libraries/test.xml | 4 + .../bld/rife2_hello/vscode/settings.json | 1 + src/test/java/rife/bld/TestProject.java | 4 + .../bld/operations/TestCleanOperation.java | 2 + .../operations/TestCreateBaseOperation.java | 4 + .../operations/TestCreateBlankOperation.java | 5 + .../operations/TestCreateLibOperation.java | 4 + .../operations/TestCreateRife2Operation.java | 5 + .../bld/operations/TestDownloadOperation.java | 120 ++++--- .../bld/operations/TestPurgeOperation.java | 340 ++++++++++-------- 27 files changed, 467 insertions(+), 192 deletions(-) diff --git a/.idea/libraries/compile.xml b/.idea/libraries/compile.xml index 9bd86aa..143dc93 100644 --- a/.idea/libraries/compile.xml +++ b/.idea/libraries/compile.xml @@ -2,12 +2,16 @@ + + + + \ No newline at end of file diff --git a/.idea/libraries/test.xml b/.idea/libraries/test.xml index d382c72..ce3c795 100644 --- a/.idea/libraries/test.xml +++ b/.idea/libraries/test.xml @@ -2,14 +2,18 @@ + + + + \ No newline at end of file diff --git a/src/main/java/rife/bld/BaseProject.java b/src/main/java/rife/bld/BaseProject.java index 4421fc7..1792b44 100644 --- a/src/main/java/rife/bld/BaseProject.java +++ b/src/main/java/rife/bld/BaseProject.java @@ -250,6 +250,13 @@ public class BaseProject extends BuildExecutor { * @since 1.5 */ protected File libCompileDirectory = null; + /** + * The provided scope lib directory. + * + * @see #libProvidedDirectory() + * @since 1.8 + */ + protected File libProvidedDirectory = null; /** * The runtime scope lib directory. * @@ -1010,6 +1017,16 @@ public class BaseProject extends BuildExecutor { return Objects.requireNonNullElseGet(libCompileDirectory, () -> new File(libDirectory(), "compile")); } + /** + * Returns the project provided scope lib directory. + * Defaults to {@code "provided"} relative to {@link #libDirectory()}. + * + * @since 1.8 + */ + public File libProvidedDirectory() { + return Objects.requireNonNullElseGet(libProvidedDirectory, () -> new File(libDirectory(), "provided")); + } + /** * Returns the project runtime scope lib directory. * Defaults to {@code "runtime"} relative to {@link #libDirectory()}. @@ -1130,6 +1147,7 @@ public class BaseProject extends BuildExecutor { libDirectory().mkdirs(); libBldDirectory().mkdirs(); libCompileDirectory().mkdirs(); + libProvidedDirectory().mkdirs(); libRuntimeDirectory().mkdirs(); if (libStandaloneDirectory() != null) { libStandaloneDirectory().mkdirs(); @@ -1399,6 +1417,24 @@ public class BaseProject extends BuildExecutor { // build the compilation classpath var classpath = new ArrayList<>(jar_files.stream().map(file -> new File(dir_abs, file)).toList()); addLocalDependencies(classpath, Scope.compile); + return classpath; + } + + /** + * Returns all the jar files that are in the provided scope classpath. + *

+ * By default, this collects all the jar files in the {@link #libProvidedDirectory()} + * and adds all the jar files from the provided scope local dependencies. + * + * @since 1.8 + */ + public List providedClasspathJars() { + // detect the jar files in the provided lib directory + var dir_abs = libProvidedDirectory().getAbsoluteFile(); + var jar_files = FileUtils.getFileList(dir_abs, INCLUDED_JARS, EXCLUDED_JARS); + + // build the compilation classpath + var classpath = new ArrayList<>(jar_files.stream().map(file -> new File(dir_abs, file)).toList()); addLocalDependencies(classpath, Scope.provided); return classpath; } @@ -1491,7 +1527,7 @@ public class BaseProject extends BuildExecutor { * @since 1.5 */ public List compileMainClasspath() { - return FileUtils.combineToAbsolutePaths(compileClasspathJars()); + return FileUtils.combineToAbsolutePaths(compileClasspathJars(), providedClasspathJars()); } /** @@ -1505,7 +1541,7 @@ public class BaseProject extends BuildExecutor { public List compileTestClasspath() { var paths = new ArrayList(); paths.add(buildMainDirectory().getAbsolutePath()); - paths.addAll(FileUtils.combineToAbsolutePaths(compileClasspathJars(), testClasspathJars())); + paths.addAll(FileUtils.combineToAbsolutePaths(compileClasspathJars(), providedClasspathJars(), testClasspathJars())); return paths; } @@ -1542,7 +1578,7 @@ public class BaseProject extends BuildExecutor { paths.add(srcTestResourcesDirectory().getAbsolutePath()); paths.add(buildMainDirectory().getAbsolutePath()); paths.add(buildTestDirectory().getAbsolutePath()); - paths.addAll(FileUtils.combineToAbsolutePaths(compileClasspathJars(), runtimeClasspathJars(), standaloneClasspathJars(), testClasspathJars())); + paths.addAll(FileUtils.combineToAbsolutePaths(compileClasspathJars(), providedClasspathJars(), runtimeClasspathJars(), standaloneClasspathJars(), testClasspathJars())); return paths; } diff --git a/src/main/java/rife/bld/dependencies/DependencyScopes.java b/src/main/java/rife/bld/dependencies/DependencyScopes.java index fc98cfa..f719792 100644 --- a/src/main/java/rife/bld/dependencies/DependencyScopes.java +++ b/src/main/java/rife/bld/dependencies/DependencyScopes.java @@ -73,8 +73,23 @@ public class DependencyScopes extends LinkedHashMap { */ public DependencySet resolveCompileDependencies(ArtifactRetriever retriever, List repositories) { return resolveScopedDependencies(retriever, repositories, - new Scope[]{Scope.provided, Scope.compile}, new Scope[]{Scope.compile}, + new Scope[]{Scope.compile}, + null); + } + + /** + * Returns the transitive set of dependencies that would be used for the provided scope in a project. + * + * @param retriever the retriever to use to get artifacts + * @param repositories the repositories to use for the resolution + * @return the provided scope dependency set + * @since 1.8 + */ + public DependencySet resolveProvidedDependencies(ArtifactRetriever retriever, List repositories) { + return resolveScopedDependencies(retriever, repositories, + new Scope[]{Scope.provided}, + new Scope[]{Scope.compile, Scope.runtime}, null); } @@ -88,7 +103,7 @@ public class DependencyScopes extends LinkedHashMap { */ public DependencySet resolveRuntimeDependencies(ArtifactRetriever retriever, List repositories) { return resolveScopedDependencies(retriever, repositories, - new Scope[]{Scope.provided, Scope.compile, Scope.runtime}, + new Scope[]{Scope.compile, Scope.runtime}, new Scope[]{Scope.compile, Scope.runtime}, resolveCompileDependencies(retriever, repositories)); } diff --git a/src/main/java/rife/bld/operations/DownloadOperation.java b/src/main/java/rife/bld/operations/DownloadOperation.java index 1799049..42bd326 100644 --- a/src/main/java/rife/bld/operations/DownloadOperation.java +++ b/src/main/java/rife/bld/operations/DownloadOperation.java @@ -28,6 +28,7 @@ public class DownloadOperation extends AbstractOperation { private final List repositories_ = new ArrayList<>(); private final DependencyScopes dependencies_ = new DependencyScopes(); private File libCompileDirectory_; + private File libProvidedDirectory_; private File libRuntimeDirectory_; private File libStandaloneDirectory_; private File libTestDirectory_; @@ -41,6 +42,7 @@ public class DownloadOperation extends AbstractOperation { */ public void execute() { executeDownloadCompileDependencies(); + executeDownloadProvidedDependencies(); executeDownloadRuntimeDependencies(); executeDownloadStandaloneDependencies(); executeDownloadTestDependencies(); @@ -58,6 +60,15 @@ public class DownloadOperation extends AbstractOperation { executeDownloadDependencies(libCompileDirectory(), dependencies().resolveCompileDependencies(artifactRetriever(), repositories())); } + /** + * Part of the {@link #execute} operation, download the {@code provided} scope artifacts. + * + * @since 1.8 + */ + protected void executeDownloadProvidedDependencies() { + executeDownloadDependencies(libProvidedDirectory(), dependencies().resolveProvidedDependencies(artifactRetriever(), repositories())); + } + /** * Part of the {@link #execute} operation, download the {@code runtime} scope artifacts. * @@ -123,6 +134,7 @@ public class DownloadOperation extends AbstractOperation { .repositories(project.repositories()) .dependencies(project.dependencies()) .libCompileDirectory(project.libCompileDirectory()) + .libProvidedDirectory(project.libProvidedDirectory()) .libRuntimeDirectory(project.libRuntimeDirectory()) .libStandaloneDirectory(project.libStandaloneDirectory()) .libTestDirectory(project.libTestDirectory()) @@ -180,6 +192,18 @@ public class DownloadOperation extends AbstractOperation { return this; } + /** + * Provides the {@code provided} scope download directory. + * + * @param directory the directory to download the {@code provided} scope artifacts into + * @return this operation instance + * @since 1.8 + */ + public DownloadOperation libProvidedDirectory(File directory) { + libProvidedDirectory_ = directory; + return this; + } + /** * Provides the {@code runtime} scope download directory. * @@ -288,6 +312,16 @@ public class DownloadOperation extends AbstractOperation { return libCompileDirectory_; } + /** + * Retrieves the {@code provided} scope download directory. + * + * @return the {@code provided} scope download directory + * @since 1.8 + */ + public File libProvidedDirectory() { + return libProvidedDirectory_; + } + /** * Retrieves the {@code runtime} scope download directory. * diff --git a/src/main/java/rife/bld/operations/PurgeOperation.java b/src/main/java/rife/bld/operations/PurgeOperation.java index c978f4d..baeb3ee 100644 --- a/src/main/java/rife/bld/operations/PurgeOperation.java +++ b/src/main/java/rife/bld/operations/PurgeOperation.java @@ -28,6 +28,7 @@ public class PurgeOperation extends AbstractOperation { private final List repositories_ = new ArrayList<>(); private final DependencyScopes dependencies_ = new DependencyScopes(); private File libCompileDirectory_; + private File libProvidedDirectory_; private File libRuntimeDirectory_; private File libStandaloneDirectory_; private File libTestDirectory_; @@ -41,6 +42,7 @@ public class PurgeOperation extends AbstractOperation { */ public void execute() { executePurgeCompileDependencies(); + executePurgeProvidedDependencies(); executePurgeRuntimeDependencies(); executePurgeStandaloneDependencies(); executePurgeTestDependencies(); @@ -58,6 +60,15 @@ public class PurgeOperation extends AbstractOperation { executePurgeDependencies(libCompileDirectory(), dependencies().resolveCompileDependencies(artifactRetriever(), repositories())); } + /** + * Part of the {@link #execute} operation, purge the {@code provided} scope artifacts. + * + * @since 1.8 + */ + protected void executePurgeProvidedDependencies() { + executePurgeDependencies(libProvidedDirectory(), dependencies().resolveProvidedDependencies(artifactRetriever(), repositories())); + } + /** * Part of the {@link #execute} operation, purge the {@code runtime} scope artifacts. * @@ -137,6 +148,7 @@ public class PurgeOperation extends AbstractOperation { .repositories(project.repositories()) .dependencies(project.dependencies()) .libCompileDirectory(project.libCompileDirectory()) + .libProvidedDirectory(project.libProvidedDirectory()) .libRuntimeDirectory(project.libRuntimeDirectory()) .libStandaloneDirectory(project.libStandaloneDirectory()) .libTestDirectory(project.libTestDirectory()) @@ -220,6 +232,18 @@ public class PurgeOperation extends AbstractOperation { return this; } + /** + * Provides the {@code provided} scope purge directory. + * + * @param directory the directory to purge the {@code provided} scope artifacts from + * @return this operation instance + * @since 1.8 + */ + public PurgeOperation libProvidedDirectory(File directory) { + libProvidedDirectory_ = directory; + return this; + } + /** * Provides the {@code runtime} scope purge directory. * @@ -302,6 +326,16 @@ public class PurgeOperation extends AbstractOperation { return libCompileDirectory_; } + /** + * Retrieves the {@code provided} scope purge directory. + * + * @return the {@code provided} scope purge directory + * @since 1.8 + */ + public File libProvidedDirectory() { + return libProvidedDirectory_; + } + /** * Retrieves the {@code runtime} scope purge directory. * diff --git a/src/main/resources/BLD_VERSION b/src/main/resources/BLD_VERSION index 6620470..53bc174 100644 --- a/src/main/resources/BLD_VERSION +++ b/src/main/resources/BLD_VERSION @@ -1 +1 @@ -1.7.6-SNAPSHOT \ No newline at end of file +1.8.0-SNAPSHOT \ No newline at end of file diff --git a/src/main/resources/templates/bld/base/idea/libraries/compile.xml b/src/main/resources/templates/bld/base/idea/libraries/compile.xml index 9bd86aa..143dc93 100644 --- a/src/main/resources/templates/bld/base/idea/libraries/compile.xml +++ b/src/main/resources/templates/bld/base/idea/libraries/compile.xml @@ -2,12 +2,16 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/bld/base/idea/libraries/test.xml b/src/main/resources/templates/bld/base/idea/libraries/test.xml index b80486a..c16475a 100644 --- a/src/main/resources/templates/bld/base/idea/libraries/test.xml +++ b/src/main/resources/templates/bld/base/idea/libraries/test.xml @@ -2,13 +2,17 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/bld/base/vscode/settings.json b/src/main/resources/templates/bld/base/vscode/settings.json index 126201f..8bc7a1b 100644 --- a/src/main/resources/templates/bld/base/vscode/settings.json +++ b/src/main/resources/templates/bld/base/vscode/settings.json @@ -9,6 +9,7 @@ "java.project.referencedLibraries": [ "${HOME}/.bld/dist/bld-{{v version/}}.jar", "lib/compile/*.jar", + "lib/provided/*.jar", "lib/runtime/*.jar", "lib/test/*.jar" ] diff --git a/src/main/resources/templates/bld/blank/idea/libraries/compile.xml b/src/main/resources/templates/bld/blank/idea/libraries/compile.xml index 9bd86aa..143dc93 100644 --- a/src/main/resources/templates/bld/blank/idea/libraries/compile.xml +++ b/src/main/resources/templates/bld/blank/idea/libraries/compile.xml @@ -2,12 +2,16 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/bld/blank/idea/libraries/test.xml b/src/main/resources/templates/bld/blank/idea/libraries/test.xml index b80486a..c16475a 100644 --- a/src/main/resources/templates/bld/blank/idea/libraries/test.xml +++ b/src/main/resources/templates/bld/blank/idea/libraries/test.xml @@ -2,13 +2,17 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/bld/blank/vscode/settings.json b/src/main/resources/templates/bld/blank/vscode/settings.json index 126201f..8bc7a1b 100644 --- a/src/main/resources/templates/bld/blank/vscode/settings.json +++ b/src/main/resources/templates/bld/blank/vscode/settings.json @@ -9,6 +9,7 @@ "java.project.referencedLibraries": [ "${HOME}/.bld/dist/bld-{{v version/}}.jar", "lib/compile/*.jar", + "lib/provided/*.jar", "lib/runtime/*.jar", "lib/test/*.jar" ] diff --git a/src/main/resources/templates/bld/lib/idea/libraries/compile.xml b/src/main/resources/templates/bld/lib/idea/libraries/compile.xml index 9bd86aa..143dc93 100644 --- a/src/main/resources/templates/bld/lib/idea/libraries/compile.xml +++ b/src/main/resources/templates/bld/lib/idea/libraries/compile.xml @@ -2,12 +2,16 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/bld/lib/idea/libraries/test.xml b/src/main/resources/templates/bld/lib/idea/libraries/test.xml index b80486a..c16475a 100644 --- a/src/main/resources/templates/bld/lib/idea/libraries/test.xml +++ b/src/main/resources/templates/bld/lib/idea/libraries/test.xml @@ -2,13 +2,17 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/bld/lib/vscode/settings.json b/src/main/resources/templates/bld/lib/vscode/settings.json index 126201f..8bc7a1b 100644 --- a/src/main/resources/templates/bld/lib/vscode/settings.json +++ b/src/main/resources/templates/bld/lib/vscode/settings.json @@ -9,6 +9,7 @@ "java.project.referencedLibraries": [ "${HOME}/.bld/dist/bld-{{v version/}}.jar", "lib/compile/*.jar", + "lib/provided/*.jar", "lib/runtime/*.jar", "lib/test/*.jar" ] diff --git a/src/main/resources/templates/bld/rife2_hello/idea/libraries/compile.xml b/src/main/resources/templates/bld/rife2_hello/idea/libraries/compile.xml index 9bd86aa..143dc93 100644 --- a/src/main/resources/templates/bld/rife2_hello/idea/libraries/compile.xml +++ b/src/main/resources/templates/bld/rife2_hello/idea/libraries/compile.xml @@ -2,12 +2,16 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/bld/rife2_hello/idea/libraries/test.xml b/src/main/resources/templates/bld/rife2_hello/idea/libraries/test.xml index b80486a..c16475a 100644 --- a/src/main/resources/templates/bld/rife2_hello/idea/libraries/test.xml +++ b/src/main/resources/templates/bld/rife2_hello/idea/libraries/test.xml @@ -2,13 +2,17 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/bld/rife2_hello/vscode/settings.json b/src/main/resources/templates/bld/rife2_hello/vscode/settings.json index 17ef30a..63a4e07 100644 --- a/src/main/resources/templates/bld/rife2_hello/vscode/settings.json +++ b/src/main/resources/templates/bld/rife2_hello/vscode/settings.json @@ -10,6 +10,7 @@ "java.project.referencedLibraries": [ "${HOME}/.bld/dist/bld-{{v version/}}.jar", "lib/compile/*.jar", + "lib/provided/*.jar", "lib/runtime/*.jar", "lib/standalone/*.jar", "lib/test/*.jar" diff --git a/src/test/java/rife/bld/TestProject.java b/src/test/java/rife/bld/TestProject.java index d432a9d..eaea1a8 100644 --- a/src/test/java/rife/bld/TestProject.java +++ b/src/test/java/rife/bld/TestProject.java @@ -307,6 +307,7 @@ public class TestProject { /lib/bld/bld-build.hash /lib/compile /lib/compile/rife2-1.5.11.jar + /lib/provided /lib/runtime /lib/test /lib/test/apiguardian-api-1.1.2.jar @@ -321,6 +322,7 @@ public class TestProject { /lib/test/opentest4j-1.2.0.jar""", FileUtils.generateDirectoryListing(tmp)); FileUtils.deleteDirectory(new File(tmp, "lib/compile")); + FileUtils.deleteDirectory(new File(tmp, "lib/provided")); FileUtils.deleteDirectory(new File(tmp, "lib/runtime")); FileUtils.deleteDirectory(new File(tmp, "lib/test")); assertEquals(""" @@ -346,6 +348,7 @@ public class TestProject { /lib/bld/bld-build.hash /lib/compile /lib/compile/rife2-1.5.12.jar + /lib/provided /lib/runtime /lib/test /lib/test/apiguardian-api-1.1.2.jar @@ -369,6 +372,7 @@ public class TestProject { /lib/bld/bld-build.hash /lib/compile /lib/compile/rife2-1.5.15.jar + /lib/provided /lib/runtime /lib/test /lib/test/apiguardian-api-1.1.2.jar diff --git a/src/test/java/rife/bld/operations/TestCleanOperation.java b/src/test/java/rife/bld/operations/TestCleanOperation.java index d5f24f1..ed8a76c 100644 --- a/src/test/java/rife/bld/operations/TestCleanOperation.java +++ b/src/test/java/rife/bld/operations/TestCleanOperation.java @@ -116,6 +116,7 @@ public class TestCleanOperation { /lib /lib/bld /lib/compile + /lib/provided /lib/runtime /lib/standalone /lib/test @@ -139,6 +140,7 @@ public class TestCleanOperation { /lib /lib/bld /lib/compile + /lib/provided /lib/runtime /lib/standalone /lib/test diff --git a/src/test/java/rife/bld/operations/TestCreateBaseOperation.java b/src/test/java/rife/bld/operations/TestCreateBaseOperation.java index 79edde2..d410755 100644 --- a/src/test/java/rife/bld/operations/TestCreateBaseOperation.java +++ b/src/test/java/rife/bld/operations/TestCreateBaseOperation.java @@ -88,6 +88,7 @@ public class TestCreateBaseOperation { /myapp/lib/bld/bld-wrapper\\.jar /myapp/lib/bld/bld-wrapper\\.properties /myapp/lib/compile + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/test /myapp/src @@ -149,6 +150,7 @@ public class TestCreateBaseOperation { /myapp/lib/bld/bld-wrapper\\.jar /myapp/lib/bld/bld-wrapper\\.properties /myapp/lib/compile + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/test /myapp/src @@ -223,6 +225,7 @@ public class TestCreateBaseOperation { /yourthing/lib/bld/bld-wrapper.jar /yourthing/lib/bld/bld-wrapper.properties /yourthing/lib/compile + /yourthing/lib/provided /yourthing/lib/runtime /yourthing/lib/test /yourthing/src @@ -285,6 +288,7 @@ public class TestCreateBaseOperation { /yourthing/lib/bld/bld-wrapper.jar /yourthing/lib/bld/bld-wrapper.properties /yourthing/lib/compile + /yourthing/lib/provided /yourthing/lib/runtime /yourthing/lib/test /yourthing/src diff --git a/src/test/java/rife/bld/operations/TestCreateBlankOperation.java b/src/test/java/rife/bld/operations/TestCreateBlankOperation.java index c66e3ec..24799b8 100644 --- a/src/test/java/rife/bld/operations/TestCreateBlankOperation.java +++ b/src/test/java/rife/bld/operations/TestCreateBlankOperation.java @@ -95,6 +95,7 @@ public class TestCreateBlankOperation { /myapp/lib/bld/bld-wrapper\\.jar /myapp/lib/bld/bld-wrapper\\.properties /myapp/lib/compile + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/test /myapp/lib/test/apiguardian-api-1\\.1\\.2-sources\\.jar @@ -174,6 +175,7 @@ public class TestCreateBlankOperation { /myapp/lib/bld/bld-wrapper\\.jar /myapp/lib/bld/bld-wrapper\\.properties /myapp/lib/compile + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/test /myapp/lib/test/apiguardian-api-1\\.1\\.2-sources\\.jar @@ -266,6 +268,7 @@ public class TestCreateBlankOperation { /yourthing/lib/bld/bld-wrapper.jar /yourthing/lib/bld/bld-wrapper.properties /yourthing/lib/compile + /yourthing/lib/provided /yourthing/lib/runtime /yourthing/lib/test /yourthing/src @@ -390,6 +393,7 @@ public class TestCreateBlankOperation { /myapp/lib/local/junit-platform-engine-1\\.10\\.0\\.jar /myapp/lib/local/opentest4j-1\\.3\\.0-sources\\.jar /myapp/lib/local/opentest4j-1\\.3\\.0\\.jar + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/test /myapp/src @@ -511,6 +515,7 @@ public class TestCreateBlankOperation { /myapp/lib/local_test/junit-platform-engine-1\\.10\\.0\\.jar /myapp/lib/local_test/opentest4j-1\\.3\\.0-sources\\.jar /myapp/lib/local_test/opentest4j-1\\.3\\.0\\.jar + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/test /myapp/src diff --git a/src/test/java/rife/bld/operations/TestCreateLibOperation.java b/src/test/java/rife/bld/operations/TestCreateLibOperation.java index 7cfb736..3345814 100644 --- a/src/test/java/rife/bld/operations/TestCreateLibOperation.java +++ b/src/test/java/rife/bld/operations/TestCreateLibOperation.java @@ -86,6 +86,7 @@ public class TestCreateLibOperation { /myapp/lib/bld/bld-wrapper.jar /myapp/lib/bld/bld-wrapper.properties /myapp/lib/compile + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/test /myapp/src @@ -146,6 +147,7 @@ public class TestCreateLibOperation { /myapp/lib/bld/bld-wrapper.jar /myapp/lib/bld/bld-wrapper.properties /myapp/lib/compile + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/test /myapp/src @@ -220,6 +222,7 @@ public class TestCreateLibOperation { /yourthing/lib/bld/bld-wrapper.jar /yourthing/lib/bld/bld-wrapper.properties /yourthing/lib/compile + /yourthing/lib/provided /yourthing/lib/runtime /yourthing/lib/test /yourthing/src @@ -281,6 +284,7 @@ public class TestCreateLibOperation { /yourthing/lib/bld/bld-wrapper.jar /yourthing/lib/bld/bld-wrapper.properties /yourthing/lib/compile + /yourthing/lib/provided /yourthing/lib/runtime /yourthing/lib/test /yourthing/src diff --git a/src/test/java/rife/bld/operations/TestCreateRife2Operation.java b/src/test/java/rife/bld/operations/TestCreateRife2Operation.java index 4d258c7..7ddb852 100644 --- a/src/test/java/rife/bld/operations/TestCreateRife2Operation.java +++ b/src/test/java/rife/bld/operations/TestCreateRife2Operation.java @@ -102,6 +102,7 @@ public class TestCreateRife2Operation { /myapp/lib/compile /myapp/lib/compile/rife2-.+-sources\\.jar /myapp/lib/compile/rife2-.+\\.jar + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/standalone /myapp/lib/standalone/jakarta\\.servlet-api-6\\.0\\.0-sources\\.jar @@ -215,6 +216,7 @@ public class TestCreateRife2Operation { /myapp/lib/compile /myapp/lib/compile/rife2-.+-sources\\.jar /myapp/lib/compile/rife2-.+\\.jar + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/standalone /myapp/lib/standalone/jakarta\\.servlet-api-6\\.0\\.0-sources\\.jar @@ -345,6 +347,7 @@ public class TestCreateRife2Operation { /yourthing/lib/bld/bld-wrapper.jar /yourthing/lib/bld/bld-wrapper.properties /yourthing/lib/compile + /yourthing/lib/provided /yourthing/lib/runtime /yourthing/lib/standalone /yourthing/lib/test @@ -508,6 +511,7 @@ public class TestCreateRife2Operation { /myapp/lib/local/slf4j-api-2\\.0\\.9\\.jar /myapp/lib/local/slf4j-simple-2\\.0\\.9-sources\\.jar /myapp/lib/local/slf4j-simple-2\\.0\\.9\\.jar + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/standalone /myapp/lib/test @@ -677,6 +681,7 @@ public class TestCreateRife2Operation { /myapp/lib/local_test/junit-platform-engine-1\\.10\\.0\\.jar /myapp/lib/local_test/opentest4j-1\\.3\\.0-sources\\.jar /myapp/lib/local_test/opentest4j-1\\.3\\.0\\.jar + /myapp/lib/provided /myapp/lib/runtime /myapp/lib/standalone /myapp/lib/test diff --git a/src/test/java/rife/bld/operations/TestDownloadOperation.java b/src/test/java/rife/bld/operations/TestDownloadOperation.java index 673ae82..eda94fb 100644 --- a/src/test/java/rife/bld/operations/TestDownloadOperation.java +++ b/src/test/java/rife/bld/operations/TestDownloadOperation.java @@ -22,6 +22,7 @@ public class TestDownloadOperation { assertTrue(operation.dependencies().isEmpty()); assertTrue(operation.repositories().isEmpty()); assertNull(operation.libCompileDirectory()); + assertNull(operation.libProvidedDirectory()); assertNull(operation.libRuntimeDirectory()); assertNull(operation.libStandaloneDirectory()); assertNull(operation.libTestDirectory()); @@ -37,13 +38,15 @@ public class TestDownloadOperation { var dir2 = new File("dir2"); var dir3 = new File("dir3"); var dir4 = new File("dir4"); + var dir5 = new File("dir5"); var operation1 = new DownloadOperation() .repositories(List.of(repository1, repository2)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4); + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5); var dependency_scopes = new DependencyScopes(); dependency_scopes.scope(Scope.compile).include(dependency1).include(dependency2); operation1.dependencies(dependency_scopes); @@ -52,15 +55,17 @@ public class TestDownloadOperation { assertTrue(operation1.dependencies().scope(Scope.compile).contains(dependency1)); assertTrue(operation1.dependencies().scope(Scope.compile).contains(dependency2)); assertEquals(dir1, operation1.libCompileDirectory()); - assertEquals(dir2, operation1.libRuntimeDirectory()); - assertEquals(dir3, operation1.libStandaloneDirectory()); - assertEquals(dir4, operation1.libTestDirectory()); + assertEquals(dir2, operation1.libProvidedDirectory()); + assertEquals(dir3, operation1.libRuntimeDirectory()); + assertEquals(dir4, operation1.libStandaloneDirectory()); + assertEquals(dir5, operation1.libTestDirectory()); var operation2 = new DownloadOperation() .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4); + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5); operation2.repositories().add(repository1); operation2.repositories().add(repository2); operation2.dependencies().scope(Scope.compile).include(dependency1).include(dependency2); @@ -70,9 +75,10 @@ public class TestDownloadOperation { assertTrue(operation2.dependencies().scope(Scope.compile).contains(dependency1)); assertTrue(operation2.dependencies().scope(Scope.compile).contains(dependency2)); assertEquals(dir1, operation2.libCompileDirectory()); - assertEquals(dir2, operation2.libRuntimeDirectory()); - assertEquals(dir3, operation2.libStandaloneDirectory()); - assertEquals(dir4, operation2.libTestDirectory()); + assertEquals(dir2, operation2.libProvidedDirectory()); + assertEquals(dir3, operation2.libRuntimeDirectory()); + assertEquals(dir4, operation2.libStandaloneDirectory()); + assertEquals(dir5, operation2.libTestDirectory()); var operation3 = new DownloadOperation() .repositories(repository1, repository2); @@ -89,19 +95,24 @@ public class TestDownloadOperation { var dir2 = new File(tmp, "dir2"); var dir3 = new File(tmp, "dir3"); var dir4 = new File(tmp, "dir4"); + var dir5 = new File(tmp, "dir5"); dir1.mkdirs(); dir2.mkdirs(); dir3.mkdirs(); dir4.mkdirs(); + dir5.mkdirs(); var operation = new DownloadOperation() .repositories(List.of(Repository.MAVEN_CENTRAL)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4); + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5); operation.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 12, 0))); + operation.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(6, 0, 0))); operation.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 4))); operation.dependencies().scope(Scope.standalone) @@ -115,15 +126,17 @@ public class TestDownloadOperation { /dir1 /dir1/commons-lang3-3.12.0.jar /dir2 - /dir2/commons-collections4-4.4.jar + /dir2/jakarta.servlet-api-6.0.0.jar /dir3 - /dir3/slf4j-api-2.0.6.jar - /dir3/slf4j-simple-2.0.6.jar + /dir3/commons-collections4-4.4.jar /dir4 - /dir4/httpclient5-5.2.1.jar - /dir4/httpcore5-5.2.jar - /dir4/httpcore5-h2-5.2.jar - /dir4/slf4j-api-1.7.36.jar""", + /dir4/slf4j-api-2.0.6.jar + /dir4/slf4j-simple-2.0.6.jar + /dir5 + /dir5/httpclient5-5.2.1.jar + /dir5/httpcore5-5.2.jar + /dir5/httpcore5-h2-5.2.jar + /dir5/slf4j-api-1.7.36.jar""", FileUtils.generateDirectoryListing(tmp)); } finally { FileUtils.deleteDirectory(tmp); @@ -139,21 +152,26 @@ public class TestDownloadOperation { var dir2 = new File(tmp, "dir2"); var dir3 = new File(tmp, "dir3"); var dir4 = new File(tmp, "dir4"); + var dir5 = new File(tmp, "dir5"); dir1.mkdirs(); dir2.mkdirs(); dir3.mkdirs(); dir4.mkdirs(); + dir5.mkdirs(); var operation = new DownloadOperation() .repositories(List.of(Repository.MAVEN_CENTRAL)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4) + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5) .downloadJavadoc(true) .downloadSources(true); operation.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 12, 0))); + operation.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(6, 0, 0))); operation.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 4))); operation.dependencies().scope(Scope.standalone) @@ -169,29 +187,33 @@ public class TestDownloadOperation { /dir1/commons-lang3-3.12.0-sources.jar /dir1/commons-lang3-3.12.0.jar /dir2 - /dir2/commons-collections4-4.4-javadoc.jar - /dir2/commons-collections4-4.4-sources.jar - /dir2/commons-collections4-4.4.jar + /dir2/jakarta.servlet-api-6.0.0-javadoc.jar + /dir2/jakarta.servlet-api-6.0.0-sources.jar + /dir2/jakarta.servlet-api-6.0.0.jar /dir3 - /dir3/slf4j-api-2.0.6-javadoc.jar - /dir3/slf4j-api-2.0.6-sources.jar - /dir3/slf4j-api-2.0.6.jar - /dir3/slf4j-simple-2.0.6-javadoc.jar - /dir3/slf4j-simple-2.0.6-sources.jar - /dir3/slf4j-simple-2.0.6.jar + /dir3/commons-collections4-4.4-javadoc.jar + /dir3/commons-collections4-4.4-sources.jar + /dir3/commons-collections4-4.4.jar /dir4 - /dir4/httpclient5-5.2.1-javadoc.jar - /dir4/httpclient5-5.2.1-sources.jar - /dir4/httpclient5-5.2.1.jar - /dir4/httpcore5-5.2-javadoc.jar - /dir4/httpcore5-5.2-sources.jar - /dir4/httpcore5-5.2.jar - /dir4/httpcore5-h2-5.2-javadoc.jar - /dir4/httpcore5-h2-5.2-sources.jar - /dir4/httpcore5-h2-5.2.jar - /dir4/slf4j-api-1.7.36-javadoc.jar - /dir4/slf4j-api-1.7.36-sources.jar - /dir4/slf4j-api-1.7.36.jar""", + /dir4/slf4j-api-2.0.6-javadoc.jar + /dir4/slf4j-api-2.0.6-sources.jar + /dir4/slf4j-api-2.0.6.jar + /dir4/slf4j-simple-2.0.6-javadoc.jar + /dir4/slf4j-simple-2.0.6-sources.jar + /dir4/slf4j-simple-2.0.6.jar + /dir5 + /dir5/httpclient5-5.2.1-javadoc.jar + /dir5/httpclient5-5.2.1-sources.jar + /dir5/httpclient5-5.2.1.jar + /dir5/httpcore5-5.2-javadoc.jar + /dir5/httpcore5-5.2-sources.jar + /dir5/httpcore5-5.2.jar + /dir5/httpcore5-h2-5.2-javadoc.jar + /dir5/httpcore5-h2-5.2-sources.jar + /dir5/httpcore5-h2-5.2.jar + /dir5/slf4j-api-1.7.36-javadoc.jar + /dir5/slf4j-api-1.7.36-sources.jar + /dir5/slf4j-api-1.7.36.jar""", FileUtils.generateDirectoryListing(tmp)); } finally { FileUtils.deleteDirectory(tmp); @@ -216,6 +238,8 @@ 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))); + project.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(6, 0, 0))); project.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 4))); project.dependencies().scope(Scope.standalone) @@ -234,6 +258,9 @@ public class TestDownloadOperation { /lib/compile /lib/compile/commons-lang3-3.12.0-sources.jar /lib/compile/commons-lang3-3.12.0.jar + /lib/provided + /lib/provided/jakarta.servlet-api-6.0.0-sources.jar + /lib/provided/jakarta.servlet-api-6.0.0.jar /lib/runtime /lib/runtime/commons-collections4-4.4-sources.jar /lib/runtime/commons-collections4-4.4.jar @@ -290,6 +317,7 @@ public class TestDownloadOperation { /lib/compile /lib/compile/stripe-java-20.136.0-sources.jar /lib/compile/stripe-java-20.136.0.jar + /lib/provided /lib/runtime /lib/runtime/gson-2.9.0-sources.jar /lib/runtime/gson-2.9.0.jar diff --git a/src/test/java/rife/bld/operations/TestPurgeOperation.java b/src/test/java/rife/bld/operations/TestPurgeOperation.java index 45a23af..aeff1b7 100644 --- a/src/test/java/rife/bld/operations/TestPurgeOperation.java +++ b/src/test/java/rife/bld/operations/TestPurgeOperation.java @@ -22,6 +22,7 @@ public class TestPurgeOperation { assertTrue(operation.dependencies().isEmpty()); assertTrue(operation.repositories().isEmpty()); assertNull(operation.libCompileDirectory()); + assertNull(operation.libProvidedDirectory()); assertNull(operation.libRuntimeDirectory()); assertNull(operation.libStandaloneDirectory()); assertNull(operation.libTestDirectory()); @@ -37,13 +38,15 @@ public class TestPurgeOperation { var dir2 = new File("dir2"); var dir3 = new File("dir3"); var dir4 = new File("dir4"); + var dir5 = new File("dir5"); var operation1 = new PurgeOperation() .repositories(List.of(repository1, repository2)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4); + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5); var dependency_scopes = new DependencyScopes(); dependency_scopes.scope(Scope.compile).include(dependency1).include(dependency2); operation1.dependencies(dependency_scopes); @@ -52,15 +55,17 @@ public class TestPurgeOperation { assertTrue(operation1.dependencies().scope(Scope.compile).contains(dependency1)); assertTrue(operation1.dependencies().scope(Scope.compile).contains(dependency2)); assertEquals(dir1, operation1.libCompileDirectory()); - assertEquals(dir2, operation1.libRuntimeDirectory()); - assertEquals(dir3, operation1.libStandaloneDirectory()); - assertEquals(dir4, operation1.libTestDirectory()); + assertEquals(dir2, operation1.libProvidedDirectory()); + assertEquals(dir3, operation1.libRuntimeDirectory()); + assertEquals(dir4, operation1.libStandaloneDirectory()); + assertEquals(dir5, operation1.libTestDirectory()); var operation2 = new PurgeOperation() .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4); + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5); operation2.repositories().add(repository1); operation2.repositories().add(repository2); operation2.dependencies().scope(Scope.compile).include(dependency1).include(dependency2); @@ -70,9 +75,10 @@ public class TestPurgeOperation { assertTrue(operation2.dependencies().scope(Scope.compile).contains(dependency1)); assertTrue(operation2.dependencies().scope(Scope.compile).contains(dependency2)); assertEquals(dir1, operation2.libCompileDirectory()); - assertEquals(dir2, operation2.libRuntimeDirectory()); - assertEquals(dir3, operation2.libStandaloneDirectory()); - assertEquals(dir4, operation2.libTestDirectory()); + assertEquals(dir2, operation2.libProvidedDirectory()); + assertEquals(dir3, operation2.libRuntimeDirectory()); + assertEquals(dir4, operation2.libStandaloneDirectory()); + assertEquals(dir5, operation2.libTestDirectory()); var operation3 = new PurgeOperation() .repositories(repository1, repository2); @@ -89,19 +95,24 @@ public class TestPurgeOperation { var dir2 = new File(tmp, "dir2"); var dir3 = new File(tmp, "dir3"); var dir4 = new File(tmp, "dir4"); + var dir5 = new File(tmp, "dir5"); dir1.mkdirs(); dir2.mkdirs(); dir3.mkdirs(); dir4.mkdirs(); + dir5.mkdirs(); var operation_download1 = new DownloadOperation() .repositories(List.of(Repository.MAVEN_CENTRAL)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4); + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5); operation_download1.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 1))); + operation_download1.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5, 0, 0))); operation_download1.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 3))); operation_download1.dependencies().scope(Scope.standalone) @@ -114,11 +125,14 @@ public class TestPurgeOperation { var operation_download2 = new DownloadOperation() .repositories(List.of(Repository.MAVEN_CENTRAL)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4); + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5); operation_download2.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 12, 0))); + operation_download2.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(6, 0, 0))); operation_download2.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 4))); operation_download2.dependencies().scope(Scope.standalone) @@ -133,33 +147,39 @@ public class TestPurgeOperation { /dir1/commons-lang3-3.1.jar /dir1/commons-lang3-3.12.0.jar /dir2 - /dir2/commons-collections4-4.3.jar - /dir2/commons-collections4-4.4.jar + /dir2/jakarta.servlet-api-5.0.0.jar + /dir2/jakarta.servlet-api-6.0.0.jar /dir3 - /dir3/slf4j-api-2.0.0.jar - /dir3/slf4j-api-2.0.6.jar - /dir3/slf4j-simple-2.0.0.jar - /dir3/slf4j-simple-2.0.6.jar + /dir3/commons-collections4-4.3.jar + /dir3/commons-collections4-4.4.jar /dir4 - /dir4/commons-codec-1.13.jar - /dir4/httpclient5-5.0.jar - /dir4/httpclient5-5.2.1.jar - /dir4/httpcore5-5.0.jar - /dir4/httpcore5-5.2.jar - /dir4/httpcore5-h2-5.0.jar - /dir4/httpcore5-h2-5.2.jar - /dir4/slf4j-api-1.7.25.jar - /dir4/slf4j-api-1.7.36.jar""", + /dir4/slf4j-api-2.0.0.jar + /dir4/slf4j-api-2.0.6.jar + /dir4/slf4j-simple-2.0.0.jar + /dir4/slf4j-simple-2.0.6.jar + /dir5 + /dir5/commons-codec-1.13.jar + /dir5/httpclient5-5.0.jar + /dir5/httpclient5-5.2.1.jar + /dir5/httpcore5-5.0.jar + /dir5/httpcore5-5.2.jar + /dir5/httpcore5-h2-5.0.jar + /dir5/httpcore5-h2-5.2.jar + /dir5/slf4j-api-1.7.25.jar + /dir5/slf4j-api-1.7.36.jar""", FileUtils.generateDirectoryListing(tmp)); var operation_purge = new PurgeOperation() .repositories(List.of(Repository.MAVEN_CENTRAL)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4); + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5); operation_purge.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 12, 0))); + operation_purge.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(6, 0, 0))); operation_purge.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 4))); operation_purge.dependencies().scope(Scope.standalone) @@ -173,15 +193,17 @@ public class TestPurgeOperation { /dir1 /dir1/commons-lang3-3.12.0.jar /dir2 - /dir2/commons-collections4-4.4.jar + /dir2/jakarta.servlet-api-6.0.0.jar /dir3 - /dir3/slf4j-api-2.0.6.jar - /dir3/slf4j-simple-2.0.6.jar + /dir3/commons-collections4-4.4.jar /dir4 - /dir4/httpclient5-5.2.1.jar - /dir4/httpcore5-5.2.jar - /dir4/httpcore5-h2-5.2.jar - /dir4/slf4j-api-1.7.36.jar""", + /dir4/slf4j-api-2.0.6.jar + /dir4/slf4j-simple-2.0.6.jar + /dir5 + /dir5/httpclient5-5.2.1.jar + /dir5/httpcore5-5.2.jar + /dir5/httpcore5-h2-5.2.jar + /dir5/slf4j-api-1.7.36.jar""", FileUtils.generateDirectoryListing(tmp)); } finally { @@ -198,21 +220,25 @@ public class TestPurgeOperation { var dir2 = new File(tmp, "dir2"); var dir3 = new File(tmp, "dir3"); var dir4 = new File(tmp, "dir4"); + var dir5 = new File(tmp, "dir5"); dir1.mkdirs(); - dir2.mkdirs(); dir3.mkdirs(); dir4.mkdirs(); + dir5.mkdirs(); var operation_download1 = new DownloadOperation() .repositories(List.of(Repository.MAVEN_CENTRAL)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4) + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5) .downloadJavadoc(true) .downloadSources(true); operation_download1.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 1))); + operation_download1.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5, 0, 0))); operation_download1.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 3))); operation_download1.dependencies().scope(Scope.standalone) @@ -225,13 +251,16 @@ public class TestPurgeOperation { var operation_download2 = new DownloadOperation() .repositories(List.of(Repository.MAVEN_CENTRAL)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4) + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5) .downloadJavadoc(true) .downloadSources(true); operation_download2.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 12, 0))); + operation_download2.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(6, 0, 0))); operation_download2.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 4))); operation_download2.dependencies().scope(Scope.standalone) @@ -250,65 +279,75 @@ public class TestPurgeOperation { /dir1/commons-lang3-3.12.0-sources.jar /dir1/commons-lang3-3.12.0.jar /dir2 - /dir2/commons-collections4-4.3-javadoc.jar - /dir2/commons-collections4-4.3-sources.jar - /dir2/commons-collections4-4.3.jar - /dir2/commons-collections4-4.4-javadoc.jar - /dir2/commons-collections4-4.4-sources.jar - /dir2/commons-collections4-4.4.jar + /dir2/jakarta.servlet-api-5.0.0-javadoc.jar + /dir2/jakarta.servlet-api-5.0.0-sources.jar + /dir2/jakarta.servlet-api-5.0.0.jar + /dir2/jakarta.servlet-api-6.0.0-javadoc.jar + /dir2/jakarta.servlet-api-6.0.0-sources.jar + /dir2/jakarta.servlet-api-6.0.0.jar /dir3 - /dir3/slf4j-api-2.0.0-javadoc.jar - /dir3/slf4j-api-2.0.0-sources.jar - /dir3/slf4j-api-2.0.0.jar - /dir3/slf4j-api-2.0.6-javadoc.jar - /dir3/slf4j-api-2.0.6-sources.jar - /dir3/slf4j-api-2.0.6.jar - /dir3/slf4j-simple-2.0.0-javadoc.jar - /dir3/slf4j-simple-2.0.0-sources.jar - /dir3/slf4j-simple-2.0.0.jar - /dir3/slf4j-simple-2.0.6-javadoc.jar - /dir3/slf4j-simple-2.0.6-sources.jar - /dir3/slf4j-simple-2.0.6.jar + /dir3/commons-collections4-4.3-javadoc.jar + /dir3/commons-collections4-4.3-sources.jar + /dir3/commons-collections4-4.3.jar + /dir3/commons-collections4-4.4-javadoc.jar + /dir3/commons-collections4-4.4-sources.jar + /dir3/commons-collections4-4.4.jar /dir4 - /dir4/commons-codec-1.13-javadoc.jar - /dir4/commons-codec-1.13-sources.jar - /dir4/commons-codec-1.13.jar - /dir4/httpclient5-5.0-javadoc.jar - /dir4/httpclient5-5.0-sources.jar - /dir4/httpclient5-5.0.jar - /dir4/httpclient5-5.2.1-javadoc.jar - /dir4/httpclient5-5.2.1-sources.jar - /dir4/httpclient5-5.2.1.jar - /dir4/httpcore5-5.0-javadoc.jar - /dir4/httpcore5-5.0-sources.jar - /dir4/httpcore5-5.0.jar - /dir4/httpcore5-5.2-javadoc.jar - /dir4/httpcore5-5.2-sources.jar - /dir4/httpcore5-5.2.jar - /dir4/httpcore5-h2-5.0-javadoc.jar - /dir4/httpcore5-h2-5.0-sources.jar - /dir4/httpcore5-h2-5.0.jar - /dir4/httpcore5-h2-5.2-javadoc.jar - /dir4/httpcore5-h2-5.2-sources.jar - /dir4/httpcore5-h2-5.2.jar - /dir4/slf4j-api-1.7.25-javadoc.jar - /dir4/slf4j-api-1.7.25-sources.jar - /dir4/slf4j-api-1.7.25.jar - /dir4/slf4j-api-1.7.36-javadoc.jar - /dir4/slf4j-api-1.7.36-sources.jar - /dir4/slf4j-api-1.7.36.jar""", + /dir4/slf4j-api-2.0.0-javadoc.jar + /dir4/slf4j-api-2.0.0-sources.jar + /dir4/slf4j-api-2.0.0.jar + /dir4/slf4j-api-2.0.6-javadoc.jar + /dir4/slf4j-api-2.0.6-sources.jar + /dir4/slf4j-api-2.0.6.jar + /dir4/slf4j-simple-2.0.0-javadoc.jar + /dir4/slf4j-simple-2.0.0-sources.jar + /dir4/slf4j-simple-2.0.0.jar + /dir4/slf4j-simple-2.0.6-javadoc.jar + /dir4/slf4j-simple-2.0.6-sources.jar + /dir4/slf4j-simple-2.0.6.jar + /dir5 + /dir5/commons-codec-1.13-javadoc.jar + /dir5/commons-codec-1.13-sources.jar + /dir5/commons-codec-1.13.jar + /dir5/httpclient5-5.0-javadoc.jar + /dir5/httpclient5-5.0-sources.jar + /dir5/httpclient5-5.0.jar + /dir5/httpclient5-5.2.1-javadoc.jar + /dir5/httpclient5-5.2.1-sources.jar + /dir5/httpclient5-5.2.1.jar + /dir5/httpcore5-5.0-javadoc.jar + /dir5/httpcore5-5.0-sources.jar + /dir5/httpcore5-5.0.jar + /dir5/httpcore5-5.2-javadoc.jar + /dir5/httpcore5-5.2-sources.jar + /dir5/httpcore5-5.2.jar + /dir5/httpcore5-h2-5.0-javadoc.jar + /dir5/httpcore5-h2-5.0-sources.jar + /dir5/httpcore5-h2-5.0.jar + /dir5/httpcore5-h2-5.2-javadoc.jar + /dir5/httpcore5-h2-5.2-sources.jar + /dir5/httpcore5-h2-5.2.jar + /dir5/slf4j-api-1.7.25-javadoc.jar + /dir5/slf4j-api-1.7.25-sources.jar + /dir5/slf4j-api-1.7.25.jar + /dir5/slf4j-api-1.7.36-javadoc.jar + /dir5/slf4j-api-1.7.36-sources.jar + /dir5/slf4j-api-1.7.36.jar""", FileUtils.generateDirectoryListing(tmp)); var operation_purge = new PurgeOperation() .repositories(List.of(Repository.MAVEN_CENTRAL)) .libCompileDirectory(dir1) - .libRuntimeDirectory(dir2) - .libStandaloneDirectory(dir3) - .libTestDirectory(dir4) + .libProvidedDirectory(dir2) + .libRuntimeDirectory(dir3) + .libStandaloneDirectory(dir4) + .libTestDirectory(dir5) .preserveSources(true) .preserveJavadoc(true); operation_purge.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 12, 0))); + operation_purge.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(6, 0, 0))); operation_purge.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 4))); operation_purge.dependencies().scope(Scope.standalone) @@ -324,29 +363,33 @@ public class TestPurgeOperation { /dir1/commons-lang3-3.12.0-sources.jar /dir1/commons-lang3-3.12.0.jar /dir2 - /dir2/commons-collections4-4.4-javadoc.jar - /dir2/commons-collections4-4.4-sources.jar - /dir2/commons-collections4-4.4.jar + /dir2/jakarta.servlet-api-6.0.0-javadoc.jar + /dir2/jakarta.servlet-api-6.0.0-sources.jar + /dir2/jakarta.servlet-api-6.0.0.jar /dir3 - /dir3/slf4j-api-2.0.6-javadoc.jar - /dir3/slf4j-api-2.0.6-sources.jar - /dir3/slf4j-api-2.0.6.jar - /dir3/slf4j-simple-2.0.6-javadoc.jar - /dir3/slf4j-simple-2.0.6-sources.jar - /dir3/slf4j-simple-2.0.6.jar + /dir3/commons-collections4-4.4-javadoc.jar + /dir3/commons-collections4-4.4-sources.jar + /dir3/commons-collections4-4.4.jar /dir4 - /dir4/httpclient5-5.2.1-javadoc.jar - /dir4/httpclient5-5.2.1-sources.jar - /dir4/httpclient5-5.2.1.jar - /dir4/httpcore5-5.2-javadoc.jar - /dir4/httpcore5-5.2-sources.jar - /dir4/httpcore5-5.2.jar - /dir4/httpcore5-h2-5.2-javadoc.jar - /dir4/httpcore5-h2-5.2-sources.jar - /dir4/httpcore5-h2-5.2.jar - /dir4/slf4j-api-1.7.36-javadoc.jar - /dir4/slf4j-api-1.7.36-sources.jar - /dir4/slf4j-api-1.7.36.jar""", + /dir4/slf4j-api-2.0.6-javadoc.jar + /dir4/slf4j-api-2.0.6-sources.jar + /dir4/slf4j-api-2.0.6.jar + /dir4/slf4j-simple-2.0.6-javadoc.jar + /dir4/slf4j-simple-2.0.6-sources.jar + /dir4/slf4j-simple-2.0.6.jar + /dir5 + /dir5/httpclient5-5.2.1-javadoc.jar + /dir5/httpclient5-5.2.1-sources.jar + /dir5/httpclient5-5.2.1.jar + /dir5/httpcore5-5.2-javadoc.jar + /dir5/httpcore5-5.2-sources.jar + /dir5/httpcore5-5.2.jar + /dir5/httpcore5-h2-5.2-javadoc.jar + /dir5/httpcore5-h2-5.2-sources.jar + /dir5/httpcore5-h2-5.2.jar + /dir5/slf4j-api-1.7.36-javadoc.jar + /dir5/slf4j-api-1.7.36-sources.jar + /dir5/slf4j-api-1.7.36.jar""", FileUtils.generateDirectoryListing(tmp)); operation_purge @@ -357,22 +400,25 @@ public class TestPurgeOperation { /dir1/commons-lang3-3.12.0-sources.jar /dir1/commons-lang3-3.12.0.jar /dir2 - /dir2/commons-collections4-4.4-sources.jar - /dir2/commons-collections4-4.4.jar + /dir2/jakarta.servlet-api-6.0.0-sources.jar + /dir2/jakarta.servlet-api-6.0.0.jar /dir3 - /dir3/slf4j-api-2.0.6-sources.jar - /dir3/slf4j-api-2.0.6.jar - /dir3/slf4j-simple-2.0.6-sources.jar - /dir3/slf4j-simple-2.0.6.jar + /dir3/commons-collections4-4.4-sources.jar + /dir3/commons-collections4-4.4.jar /dir4 - /dir4/httpclient5-5.2.1-sources.jar - /dir4/httpclient5-5.2.1.jar - /dir4/httpcore5-5.2-sources.jar - /dir4/httpcore5-5.2.jar - /dir4/httpcore5-h2-5.2-sources.jar - /dir4/httpcore5-h2-5.2.jar - /dir4/slf4j-api-1.7.36-sources.jar - /dir4/slf4j-api-1.7.36.jar""", + /dir4/slf4j-api-2.0.6-sources.jar + /dir4/slf4j-api-2.0.6.jar + /dir4/slf4j-simple-2.0.6-sources.jar + /dir4/slf4j-simple-2.0.6.jar + /dir5 + /dir5/httpclient5-5.2.1-sources.jar + /dir5/httpclient5-5.2.1.jar + /dir5/httpcore5-5.2-sources.jar + /dir5/httpcore5-5.2.jar + /dir5/httpcore5-h2-5.2-sources.jar + /dir5/httpcore5-h2-5.2.jar + /dir5/slf4j-api-1.7.36-sources.jar + /dir5/slf4j-api-1.7.36.jar""", FileUtils.generateDirectoryListing(tmp)); operation_purge @@ -382,15 +428,17 @@ public class TestPurgeOperation { /dir1 /dir1/commons-lang3-3.12.0.jar /dir2 - /dir2/commons-collections4-4.4.jar + /dir2/jakarta.servlet-api-6.0.0.jar /dir3 - /dir3/slf4j-api-2.0.6.jar - /dir3/slf4j-simple-2.0.6.jar + /dir3/commons-collections4-4.4.jar /dir4 - /dir4/httpclient5-5.2.1.jar - /dir4/httpcore5-5.2.jar - /dir4/httpcore5-h2-5.2.jar - /dir4/slf4j-api-1.7.36.jar""", + /dir4/slf4j-api-2.0.6.jar + /dir4/slf4j-simple-2.0.6.jar + /dir5 + /dir5/httpclient5-5.2.1.jar + /dir5/httpcore5-5.2.jar + /dir5/httpcore5-h2-5.2.jar + /dir5/slf4j-api-1.7.36.jar""", FileUtils.generateDirectoryListing(tmp)); } finally { FileUtils.deleteDirectory(tmp); @@ -415,6 +463,8 @@ public class TestPurgeOperation { project1.repositories().add(Repository.MAVEN_CENTRAL); project1.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 1))); + project1.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5, 0, 0))); project1.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 3))); project1.dependencies().scope(Scope.standalone) @@ -427,6 +477,8 @@ public class TestPurgeOperation { project2.repositories().add(Repository.MAVEN_CENTRAL); project2.dependencies().scope(Scope.compile) .include(new Dependency("org.apache.commons", "commons-lang3", new VersionNumber(3, 12, 0))); + project2.dependencies().scope(Scope.provided) + .include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(6, 0, 0))); project2.dependencies().scope(Scope.runtime) .include(new Dependency("org.apache.commons", "commons-collections4", new VersionNumber(4, 4))); project2.dependencies().scope(Scope.standalone) @@ -449,6 +501,11 @@ public class TestPurgeOperation { /lib/compile/commons-lang3-3.1.jar /lib/compile/commons-lang3-3.12.0-sources.jar /lib/compile/commons-lang3-3.12.0.jar + /lib/provided + /lib/provided/jakarta.servlet-api-5.0.0-sources.jar + /lib/provided/jakarta.servlet-api-5.0.0.jar + /lib/provided/jakarta.servlet-api-6.0.0-sources.jar + /lib/provided/jakarta.servlet-api-6.0.0.jar /lib/runtime /lib/runtime/commons-collections4-4.3-sources.jar /lib/runtime/commons-collections4-4.3.jar @@ -505,6 +562,9 @@ public class TestPurgeOperation { /lib/compile /lib/compile/commons-lang3-3.12.0-sources.jar /lib/compile/commons-lang3-3.12.0.jar + /lib/provided + /lib/provided/jakarta.servlet-api-6.0.0-sources.jar + /lib/provided/jakarta.servlet-api-6.0.0.jar /lib/runtime /lib/runtime/commons-collections4-4.4-sources.jar /lib/runtime/commons-collections4-4.4.jar