Skip to content

Commit

Permalink
Test commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Dependency Admin committed Jan 6, 2025
1 parent 73adbe4 commit d3bc63f
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 0 deletions.
16 changes: 16 additions & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
plugins {
`kotlin-dsl`
`maven-publish`
}

repositories {
Expand All @@ -11,3 +12,18 @@ kotlin {
languageVersion.set(JavaLanguageVersion.of(17))
}
}

gradlePlugin {
plugins {
create("jar-bundling") {
id = "no.nav.tms.jar-bundling"
implementationClass = "JarBundling"
}
}
}

publishing {
repositories {
mavenLocal()
}
}
72 changes: 72 additions & 0 deletions buildSrc/src/main/kotlin/jarBundling.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import org.gradle.api.DefaultTask
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaApplication
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction
import org.gradle.jvm.tasks.Jar
import java.io.File

// Managed by tms-dependency-admin.

abstract class JarBundling : Plugin<Project> {

override fun apply(target: Project) {

val configureTask = target.tasks.register("configureJar", ConfigureJarTask::class.java) {
this.application = target

val classes = target.tasks.named("classes")

dependsOn(classes)
}

val packageTask = target.tasks.register("packageJar", BundleJarsTask::class.java) {
this.application = target
}

target.tasks.withType(Jar::class.java) {
dependsOn(configureTask)
finalizedBy(packageTask)
}
}
}

abstract class ConfigureJarTask : DefaultTask() {
@Input
lateinit var application: Project

@TaskAction
fun action() {
application.tasks.withType(Jar::class.java) {

val javaApplication = application.extensions.getByType(JavaApplication::class.java)

val mainClassName = javaApplication.mainClass

archiveBaseName.set("app")
manifest {
val classpath = application.configurations.getByName("runtimeClasspath")
attributes["Main-Class"] = mainClassName
attributes["Class-Path"] = classpath.joinToString(separator = " ") {
it.name
}
}
}
}
}

abstract class BundleJarsTask : DefaultTask() {
@Input
lateinit var application: Project

@TaskAction
fun action() {
val classpath = application.configurations.getByName("runtimeClasspath")

classpath.forEach {
val file = File("${application.layout.buildDirectory.get()}/libs/${it.name}")
if (!file.exists()) it.copyTo(file)
}
}
}

0 comments on commit d3bc63f

Please sign in to comment.