Skip to content

Commit 166cfa2

Browse files
committed
WIP — use application plugin.
1 parent ef91d71 commit 166cfa2

File tree

1 file changed

+65
-33
lines changed

1 file changed

+65
-33
lines changed

build.gradle.kts

Lines changed: 65 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
2-
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
32
import org.gradle.internal.os.OperatingSystem
43
import org.jetbrains.dokka.gradle.DokkaTask
54
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationToRunnableFiles
@@ -30,9 +29,10 @@ val lwjglNatives = when {
3029

3130
plugins {
3231
kotlin("multiplatform") version Versions.kotlin
32+
application //to run JVM part
3333
kotlin("plugin.serialization") version Versions.kotlin
3434
id("org.jetbrains.dokka") version Versions.dokka
35-
id("com.github.johnrengelman.shadow") version "5.2.0"
35+
// id("com.github.johnrengelman.shadow") version "5.2.0"
3636
id("com.github.ben-manes.versions") version "0.29.0"
3737
id("maven-publish")
3838
id("name.remal.check-dependency-updates") version "1.0.211"
@@ -51,9 +51,14 @@ group = "org.baaahs"
5151
version = "0.0.1"
5252

5353
kotlin {
54-
jvm()
54+
jvm {
55+
withJava()
56+
}
57+
5558
js {
5659
browser {
60+
binaries.executable()
61+
5762
useCommonJs()
5863

5964
webpackTask {
@@ -196,16 +201,27 @@ kotlin {
196201
}
197202
}
198203

199-
// workaround for https://youtrack.jetbrains.com/issue/KT-24463:
200-
tasks.named<KotlinCompile>("compileKotlinJvm") {
201-
dependsOn(":copySheepModel")
202-
}
204+
application {
205+
mainClassName = "baaahs.PinkyMainKt"
203206

204-
tasks.create<Copy>("copySheepModel") {
205-
from("src/commonMain/resources")
206-
into("build/classes/kotlin/jvm/main")
207+
if (isMac()) {
208+
applicationDefaultJvmArgs = listOf(
209+
"-XstartOnFirstThread", // required for OpenGL: https://github.com/LWJGL/lwjgl3/issues/311
210+
"-Djava.awt.headless=true" // required for Beat Link; otherwise we get this: https://jogamp.org/bugzilla/show_bug.cgi?id=485
211+
)
212+
}
207213
}
208214

215+
//// workaround for https://youtrack.jetbrains.com/issue/KT-24463:
216+
//tasks.named<KotlinCompile>("compileKotlinJvm") {
217+
// dependsOn(":copySheepModel")
218+
//}
219+
220+
//tasks.create<Copy>("copySheepModel") {
221+
// from("src/commonMain/resources")
222+
// into("build/classes/kotlin/jvm/main")
223+
//}
224+
209225
tasks.withType(Kotlin2JsCompile::class) {
210226
kotlinOptions.sourceMap = true
211227
kotlinOptions.sourceMapEmbedSources = "always"
@@ -221,7 +237,7 @@ tasks.withType(KotlinCompile::class) {
221237
}
222238

223239
tasks.named<ProcessResources>("jsProcessResources") {
224-
dependsOn("kotlinNpmInstall") // for node_modules stuff
240+
// dependsOn("kotlinNpmInstall") // for node_modules stuff
225241

226242
from("build/js/node_modules/requirejs") { include("require.js") }
227243
from("build/js/node_modules/three/build") { include("three.js") }
@@ -245,9 +261,9 @@ tasks.named<ProcessResources>("jsProcessResources") {
245261
}
246262

247263
tasks.named<ProcessResources>("jvmProcessResources") {
248-
dependsOn("jsBrowserDevelopmentWebpack")
249-
250-
from("build/distributions") { include("sparklemotion.js") }
264+
// dependsOn("jsBrowserDevelopmentWebpack")
265+
//
266+
// from("build/distributions") { include("sparklemotion.js") }
251267

252268
doLast {
253269
createResourceFilesList(File(buildDir, "processedResources/jvm/main"))
@@ -302,27 +318,43 @@ tasks.create<JavaExec>("runGlslJvmTests") {
302318
}
303319
}
304320

305-
tasks.create<Copy>("packageClientResources") {
306-
dependsOn("jsProcessResources", "jsBrowserWebpack")
307-
duplicatesStrategy = DuplicatesStrategy.WARN
308-
from(project.file("build/processedResources/js/main"))
309-
from(project.file("build/distributions"))
310-
into("build/classes/kotlin/jvm/main/htdocs")
321+
//tasks.create<Copy>("packageClientResources") {
322+
// dependsOn("jsProcessResources", "jsBrowserWebpack")
323+
// duplicatesStrategy = DuplicatesStrategy.WARN
324+
// from(project.file("build/processedResources/js/main"))
325+
// from(project.file("build/distributions"))
326+
// into("build/classes/kotlin/jvm/main/htdocs")
327+
//}
328+
329+
//tasks.named<Jar>("jvmJar") {
330+
// dependsOn("packageClientResources")
331+
// duplicatesStrategy = DuplicatesStrategy.WARN
332+
//}
333+
334+
//// include JS artifacts in any JAR we generate
335+
//tasks.getByName<Jar>("jvmJar") {
336+
// val taskName = if (project.hasProperty("isProduction")) {
337+
// "jsBrowserProductionWebpack"
338+
// } else {
339+
// "jsBrowserDevelopmentWebpack"
340+
// }
341+
// val webpackTask = tasks.getByName<KotlinWebpack>(taskName)
342+
// dependsOn(webpackTask) // make sure JS gets compiled first
343+
// from(File(webpackTask.destinationDirectory, webpackTask.outputFileName)) // bring output file along into the JAR
344+
//}
345+
346+
tasks.getByName<JavaExec>("run") {
347+
classpath(tasks.getByName<Jar>("jvmJar")) // so that the JS artifacts generated by `jvmJar` can be found and served
311348
}
312349

313-
tasks.named<Jar>("jvmJar") {
314-
dependsOn("packageClientResources")
315-
duplicatesStrategy = DuplicatesStrategy.WARN
316-
}
317-
318-
tasks.create<ShadowJar>("shadowJar") {
319-
dependsOn("jvmJar")
320-
from(tasks.named<Jar>("jvmJar").get().archiveFile)
321-
configurations = listOf(project.configurations["jvmRuntimeClasspath"])
322-
manifest {
323-
attributes["Main-Class"] = "baaahs.PinkyMainKt"
324-
}
325-
}
350+
//tasks.create<ShadowJar>("shadowJar") {
351+
// dependsOn("jvmJar")
352+
// from(tasks.named<Jar>("jvmJar").get().archiveFile)
353+
// configurations = listOf(project.configurations["jvmRuntimeClasspath"])
354+
// manifest {
355+
// attributes["Main-Class"] = "baaahs.PinkyMainKt"
356+
// }
357+
//}
326358

327359
tasks.withType(Test::class) {
328360
useJUnitPlatform {

0 commit comments

Comments
 (0)