in maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java [130:227]
File createArgsFile(
@Nonnull String moduleName,
@Nonnull List<String> modulePath,
@Nonnull List<String> classPath,
@Nonnull Collection<String> packages,
File patchFile,
@Nonnull String startClassName,
boolean isMainDescriptor,
@Nonnull List<String[]> providerJpmsArguments)
throws IOException {
File surefireArgs = TempFileManager.instance(getTempDirectory()).createTempFile("surefireargs", "");
if (isDebug()) {
getLogger().debug("Path to args file: " + surefireArgs.getCanonicalPath());
} else {
surefireArgs.deleteOnExit();
}
try (FileWriter io = new FileWriter(surefireArgs)) {
StringBuilder args = new StringBuilder(64 * 1024);
if (!modulePath.isEmpty()) {
// https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID-4856361B-8BFD-4964-AE84-121F5F6CF111
args.append("--module-path").append(NL).append('"');
for (Iterator<String> it = modulePath.iterator(); it.hasNext(); ) {
args.append(replace(it.next(), "\\", "\\\\"));
if (it.hasNext()) {
args.append(pathSeparatorChar);
}
}
args.append('"').append(NL);
}
if (!classPath.isEmpty()) {
args.append("--class-path").append(NL).append('"');
for (Iterator<String> it = classPath.iterator(); it.hasNext(); ) {
args.append(replace(it.next(), "\\", "\\\\"));
if (it.hasNext()) {
args.append(pathSeparatorChar);
}
}
args.append('"').append(NL);
}
if (isMainDescriptor) {
args.append("--patch-module")
.append(NL)
.append(moduleName)
.append('=')
.append('"')
.append(replace(patchFile.getPath(), "\\", "\\\\"))
.append('"')
.append(NL);
for (String pkg : packages) {
args.append("--add-opens")
.append(NL)
.append(moduleName)
.append('/')
.append(pkg)
.append('=')
.append("ALL-UNNAMED")
.append(NL);
}
args.append("--add-modules").append(NL).append(moduleName).append(NL);
args.append("--add-reads")
.append(NL)
.append(moduleName)
.append('=')
.append("ALL-UNNAMED")
.append(NL);
} else {
args.append("--add-modules").append(NL).append(moduleName).append(NL);
}
for (String[] entries : providerJpmsArguments) {
for (String entry : entries) {
args.append(entry).append(NL);
}
}
args.append(startClassName);
String argsFileContent = args.toString();
if (isDebug()) {
getLogger().debug("args file content:" + NL + argsFileContent);
}
io.write(argsFileContent);
return surefireArgs;
}
}