Skip to content

Commit

Permalink
🎨
Browse files Browse the repository at this point in the history
  • Loading branch information
ryandens committed Jan 27, 2025
1 parent 56517f9 commit 6a6902e
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,13 @@ class JlinkApplicationRunPluginFunctionalTest {
assertTrue(result.output.contains("Configuration cache entry stored."))

val ccResult =
GradleRunner.create()
GradleRunner
.create()
.forwardOutput()
.withPluginClasspath()
.withArguments("--configuration-cache", "run")
.withProjectDir(projectDir).build()
.withProjectDir(projectDir)
.build()

// verify the configuration cache is used
assertTrue(ccResult.output.contains("Reusing configuration cache."))
Expand Down Expand Up @@ -137,11 +139,13 @@ class JlinkApplicationRunPluginFunctionalTest {
assertTrue(result.output.contains("Configuration cache entry stored."))

val ccResult =
GradleRunner.create()
GradleRunner
.create()
.forwardOutput()
.withPluginClasspath()
.withArguments("--configuration-cache", "installDist", "execStartScript")
.withProjectDir(projectDir).build()
.withProjectDir(projectDir)
.build()

// verify the configuration cache is used
assertTrue(ccResult.output.contains("Reusing configuration cache."))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ class JlinkJavaLauncher(
private val metadata: Provider<JavaInstallationMetadata>,
private val executablePath: Provider<RegularFile>,
) : JavaLauncher {
override fun getMetadata(): JavaInstallationMetadata {
return metadata.get()
}
override fun getMetadata(): JavaInstallationMetadata = metadata.get()

override fun getExecutablePath(): RegularFile {
return executablePath.get()
}
override fun getExecutablePath(): RegularFile = executablePath.get()
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,17 @@ class JlinkJreApplicationDistributionPlugin : Plugin<Project> {
project.pluginManager.apply(JlinkJrePlugin::class.java)

val jlinkJreOutput =
project.tasks.named(
JlinkJrePlugin.JLINK_JRE_TASK_NAME,
JlinkJreTask::class.java,
).get().outputDirectory.dir("jre")
project.tasks
.named(
JlinkJrePlugin.JLINK_JRE_TASK_NAME,
JlinkJreTask::class.java,
).get()
.outputDirectory
.dir("jre")

project.extensions.getByType(DistributionContainer::class.java).named(DistributionPlugin.MAIN_DISTRIBUTION_NAME)
project.extensions
.getByType(DistributionContainer::class.java)
.named(DistributionPlugin.MAIN_DISTRIBUTION_NAME)
.configure { distribution ->
distribution.contents { copy ->
copy.from(jlinkJreOutput) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ class JlinkJreApplicationRunPlugin : Plugin<Project> {
it.inputs.dir(jlinkOutput)
it.javaLauncher.set(
JlinkJavaLauncher(
jlinkJreTask.javaCompiler.map {
javaCompiler ->
jlinkJreTask.javaCompiler.map { javaCompiler ->
javaCompiler.metadata
},
jlinkJreTask.outputDirectory.file("jre/bin/java"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,12 @@ abstract class JlinkJreTask : AbstractExecTask<JlinkJreTask> {
}

override fun exec() {
setExecutable(javaCompiler.get().metadata.installationPath.file("bin/jlink"))
setExecutable(
javaCompiler
.get()
.metadata.installationPath
.file("bin/jlink"),
)
val jlinkOutput = outputDirectory.dir("jre").get().asFile
jlinkOutput.deleteRecursively() // jlink expects the output directory to not exist when it runs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ class JlinkJrePluginTest {
// Verify the result
val jlinkJreTask = project.tasks.getByName("jlinkJre") as JlinkJreTask
assertNotNull(jlinkJreTask)
assertEquals("jmods", jlinkJreTask.modulePath.get().asFile.name)
assertEquals(
"jmods",
jlinkJreTask.modulePath
.get()
.asFile.name,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,14 @@ class JlinkJibFunctionalTest {
assertTrue(
File(
projectDir,
Paths.get(
"build",
"jlink-jre",
"jre",
"bin",
javaExecutableFileName,
).toString(),
Paths
.get(
"build",
"jlink-jre",
"jre",
"bin",
javaExecutableFileName,
).toString(),
).exists(),
)
assertTrue(result.output.contains("Running extension: com.ryandens.jlink.jib.JlinkJibPlugin"))
Expand Down
34 changes: 21 additions & 13 deletions jlink-jib/src/main/kotlin/com/ryandens/jlink/jib/JlinkJibPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ import org.gradle.api.Project
import java.nio.file.attribute.PosixFilePermission
import java.util.Optional

class JlinkJibPlugin : JibGradlePluginExtension<Void>, Plugin<Project> {
override fun getExtraConfigType(): Optional<Class<Void>> {
return Optional.empty()
}
class JlinkJibPlugin :
JibGradlePluginExtension<Void>,
Plugin<Project> {
override fun getExtraConfigType(): Optional<Class<Void>> = Optional.empty()

override fun extendContainerBuildPlan(
buildPlan: ContainerBuildPlan?,
Expand All @@ -45,15 +45,23 @@ class JlinkJibPlugin : JibGradlePluginExtension<Void>, Plugin<Project> {

// create jlink layer
val entries =
jlinkJreOutput.get().asFileTree.files.map {
FileEntry(
it.toPath(),
AbsoluteUnixPath.get("$jreInstallationDirectory${it.toRelativeString(jlinkJreOutput.get().asFile)}"),
FilePermissions.fromPosixFilePermissions(jlinkJibPluginExtension.jrePosixFilePermissions.get()),
FileEntriesLayer.DEFAULT_MODIFICATION_TIME,
)
}.toMutableList()
val jlinkLayer = FileEntriesLayer.builder().setName("jlink").setEntries(entries).build()
jlinkJreOutput
.get()
.asFileTree.files
.map {
FileEntry(
it.toPath(),
AbsoluteUnixPath.get("$jreInstallationDirectory${it.toRelativeString(jlinkJreOutput.get().asFile)}"),
FilePermissions.fromPosixFilePermissions(jlinkJibPluginExtension.jrePosixFilePermissions.get()),
FileEntriesLayer.DEFAULT_MODIFICATION_TIME,
)
}.toMutableList()
val jlinkLayer =
FileEntriesLayer
.builder()
.setName("jlink")
.setEntries(entries)
.build()
val layers = mutableListOf<LayerObject>()
layers.addAll(buildPlan.layers)
layers.add(1, jlinkLayer)
Expand Down

0 comments on commit 6a6902e

Please sign in to comment.