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. * diff --git a/src/main/java/rife/bld/operations/JavacOptions.java b/src/main/java/rife/bld/operations/JavacOptions.java index 4c6c208..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 @@ -253,6 +279,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 *