Skip to content

Commit cc7698d

Browse files
committed
Bruker custom plugin.
1 parent 92d705e commit cc7698d

File tree

4 files changed

+89
-27
lines changed

4 files changed

+89
-27
lines changed

build.gradle.kts

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ plugins {
44
kotlin("jvm").version(Kotlin.version)
55

66
application
7+
8+
id("no.nav.tms-bundle-jars")
79
}
810

911
kotlin {
@@ -53,10 +55,8 @@ dependencies {
5355
testImplementation(Mockk.mockk)
5456
}
5557

56-
val projectMainClass = "no.nav.tms.varsel.api.ApplicationKt"
57-
5858
application {
59-
mainClass.set(projectMainClass)
59+
mainClass.set("no.nav.tms.varsel.api.ApplicationKt")
6060
}
6161

6262
tasks {
@@ -70,21 +70,3 @@ tasks {
7070
}
7171
}
7272
}
73-
74-
tasks {
75-
withType<Jar> {
76-
archiveBaseName.set("app")
77-
manifest {
78-
attributes["Main-Class"] = projectMainClass
79-
attributes["Class-Path"] = configurations.runtimeClasspath.get().joinToString(separator = " ") {
80-
it.name
81-
}
82-
}
83-
doLast {
84-
configurations.runtimeClasspath.get().forEach {
85-
val file = File("${layout.buildDirectory.get()}/libs/${it.name}")
86-
if (!file.exists()) it.copyTo(file)
87-
}
88-
}
89-
}
90-
}

buildSrc/build.gradle.kts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
`kotlin-dsl`
3+
`maven-publish`
34
}
45

56
repositories {
@@ -11,3 +12,18 @@ kotlin {
1112
languageVersion.set(JavaLanguageVersion.of(17))
1213
}
1314
}
15+
16+
gradlePlugin {
17+
plugins {
18+
create("tms-bundle-jars") {
19+
id = "no.nav.tms-bundle-jars"
20+
implementationClass = "BundleJars"
21+
}
22+
}
23+
}
24+
25+
publishing {
26+
repositories {
27+
mavenLocal()
28+
}
29+
}

buildSrc/settings.gradle.kts

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import org.gradle.api.DefaultTask
2+
import org.gradle.api.Plugin
3+
import org.gradle.api.Project
4+
import org.gradle.api.plugins.JavaApplication
5+
import org.gradle.api.tasks.Input
6+
import org.gradle.api.tasks.TaskAction
7+
import org.gradle.jvm.tasks.Jar
8+
import java.io.File
9+
10+
abstract class BundleJars : Plugin<Project> {
11+
12+
override fun apply(target: Project) {
13+
14+
val configureTask = target.tasks.register("configureJar", ConfigureJarTask::class.java) {
15+
this.application = target
16+
17+
val classes = target.tasks.named("classes")
18+
19+
dependsOn(classes)
20+
}
21+
22+
val packageTask = target.tasks.register("packageJar", BundleJarsTask::class.java) {
23+
this.application = target
24+
}
25+
26+
target.tasks.withType(Jar::class.java) {
27+
dependsOn(configureTask)
28+
finalizedBy(packageTask)
29+
}
30+
}
31+
}
32+
33+
abstract class ConfigureJarTask : DefaultTask() {
34+
@Input
35+
lateinit var application: Project
36+
37+
@TaskAction
38+
fun action() {
39+
application.tasks.withType(Jar::class.java) {
40+
41+
val javaApplication = application.extensions.getByType(JavaApplication::class.java)
42+
43+
val mainClassName = javaApplication.mainClass
44+
45+
archiveBaseName.set("app")
46+
manifest {
47+
val classpath = application.configurations.getByName("runtimeClasspath")
48+
attributes["Main-Class"] = mainClassName
49+
attributes["Class-Path"] = classpath.joinToString(separator = " ") {
50+
it.name
51+
}
52+
}
53+
}
54+
}
55+
}
56+
57+
abstract class BundleJarsTask : DefaultTask() {
58+
@Input
59+
lateinit var application: Project
60+
61+
@TaskAction
62+
fun action() {
63+
val classpath = application.configurations.getByName("runtimeClasspath")
64+
65+
classpath.forEach {
66+
val file = File("${application.layout.buildDirectory.get()}/libs/${it.name}")
67+
if (!file.exists()) it.copyTo(file)
68+
}
69+
}
70+
}

0 commit comments

Comments
 (0)