Merge pull request #6838 from alvasw/jlink_task_make_java_modules_optional

JLinkTask: Make Java Modules Optional
This commit is contained in:
Alejandro García 2023-08-31 19:39:50 +00:00 committed by GitHub
commit 5738d07b45
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,6 +5,7 @@ import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import java.util.concurrent.TimeUnit
@ -14,8 +15,9 @@ abstract class JLinkTask : DefaultTask() {
@get:InputDirectory
abstract val jdkDirectory: DirectoryProperty
@get:Optional
@get:InputDirectory
abstract val javaFxJmodsDirectory: DirectoryProperty
abstract val javaModulesDirectory: DirectoryProperty
@get:InputFile
abstract val jDepsOutputFile: RegularFileProperty
@ -33,7 +35,6 @@ abstract class JLinkTask : DefaultTask() {
val processBuilder = ProcessBuilder(
jLinkPath.toAbsolutePath().toString(),
"--module-path", javaFxJmodsDirectory.asFile.get().absolutePath,
"--add-modules", parseUsedJavaModulesFromJDepsOutput(),
"--strip-native-commands",
@ -43,6 +44,13 @@ abstract class JLinkTask : DefaultTask() {
"--output", outputDirectoryFile.absolutePath
)
if (javaModulesDirectory.isPresent) {
val commands = processBuilder.command()
commands.add("--module-path")
commands.add(javaModulesDirectory.asFile.get().absolutePath)
}
processBuilder.inheritIO()
val process = processBuilder.start()
@ -55,7 +63,10 @@ abstract class JLinkTask : DefaultTask() {
}
private fun parseUsedJavaModulesFromJDepsOutput(): String {
val readLines = jDepsOutputFile.asFile.get().readLines()
var readLines = jDepsOutputFile.asFile.get().readLines()
if (!javaModulesDirectory.isPresent) {
readLines = readLines.filter { it.startsWith("java.") }
}
return readLines.joinToString(",")
}
}