From 43eabcb5b6b1b0a24071d67951ee0ab2e90c7408 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 18 Nov 2025 14:28:54 -0800 Subject: [PATCH 1/3] Allow for modulePath and classPath specification using a File array or collection --- .../operations/AbstractProcessOperation.java | 56 +++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/src/main/java/rife/bld/operations/AbstractProcessOperation.java b/src/main/java/rife/bld/operations/AbstractProcessOperation.java index da47897..ef8a9a6 100644 --- a/src/main/java/rife/bld/operations/AbstractProcessOperation.java +++ b/src/main/java/rife/bld/operations/AbstractProcessOperation.java @@ -10,10 +10,7 @@ import rife.bld.operations.exceptions.OperationOptionException; import rife.tools.exceptions.FileUtilsErrorException; import java.io.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; /** @@ -233,6 +230,18 @@ public abstract class AbstractProcessOperation @@ -247,6 +256,20 @@ public abstract class AbstractProcessOperation + * A copy will be created to allow this list to be independently modifiable. + * + * @param classpath a list of classpath entries for the operation + * @return this operation instance + * @since 2.3.1 + */ + public T classpath(Collection classpath) { + classpath_.addAll(classpath.stream().map(File::getAbsolutePath).toList()); + return (T) this; + } + /** * Provides module path entries to use for the operation. * @@ -259,6 +282,17 @@ public abstract class AbstractProcessOperation @@ -273,6 +307,20 @@ public abstract class AbstractProcessOperation + * A copy will be created to allow this list to be independently modifiable. + * + * @param modulePath a list of module path entries for the operation + * @return this operation instance + * @since 2.3.1 + */ + public T modulePath(Collection modulePath) { + modulePath_.addAll(modulePath.stream().map(File::getAbsolutePath).toList()); + return (T) this; + } + /** * Provides the main class to launch with the java tool. * From 20845e4fcb1415b260e8b013d7545584dfd71ebc Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sat, 27 Dec 2025 12:06:12 -0800 Subject: [PATCH 2/3] Add support for `--source` and `--target` in JavacOptions --- .../rife/bld/operations/JavacOptions.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/rife/bld/operations/JavacOptions.java b/src/main/java/rife/bld/operations/JavacOptions.java index 4c6c208..d8b5061 100644 --- a/src/main/java/rife/bld/operations/JavacOptions.java +++ b/src/main/java/rife/bld/operations/JavacOptions.java @@ -253,6 +253,30 @@ public class JavacOptions extends ArrayList { return this; } + /** + * Provide source compatibility with the specified Java SE release. + * + * @return this list of options + * @since 2.3.1 + */ + public JavacOptions source(int version) { + add("--source"); + add(Convert.toString(version)); + return this; + } + + /** + * Generate class files suitable for the specified Java SE release. + * + * @return this list of options + * @since 2.3.1 + */ + public JavacOptions target(int version) { + add("--target"); + add(Convert.toString(version)); + return this; + } + /** * Generate debugging info * From db2adfaf7fd1fd8ec5ff5da7394dd5f78eb7fd4d Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sat, 27 Dec 2025 12:22:27 -0800 Subject: [PATCH 3/3] Add support for `--add-exports` in JavacOptions --- .../rife/bld/operations/JavacOptions.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/rife/bld/operations/JavacOptions.java b/src/main/java/rife/bld/operations/JavacOptions.java index d8b5061..bbe9c90 100644 --- a/src/main/java/rife/bld/operations/JavacOptions.java +++ b/src/main/java/rife/bld/operations/JavacOptions.java @@ -46,6 +46,32 @@ public class JavacOptions extends ArrayList { return this; } + /** + * Specifies a package to be considered as exported from its defining + * module to additional modules or to all unnamed modules when the value + * of other-module is ALL-UNNAMED. + * + * @return this list of options + * @since 2.3.1 + */ + public JavacOptions addExports(String... modules) { + return addExports(Arrays.asList(modules)); + } + + /** + * Specifies a package to be considered as exported from its defining + * module to additional modules or to all unnamed modules when the value + * of other-module is ALL-UNNAMED. + * + * @return this list of options + * @since 2.3.1 + */ + public JavacOptions addExports(List modules) { + add("--add-exports"); + add(StringUtils.join(modules, ",")); + return this; + } + /** * Root modules to resolve in addition to the initial modules, * or all modules on the module path if a module is