11import org.gradle.internal.jvm.Jvm
2+ import org.gradle.kotlin.dsl.support.zipTo
23import org.gradle.internal.os.OperatingSystem
34import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
5+ import org.jetbrains.compose.ExperimentalComposeLibrary
46import org.jetbrains.compose.desktop.application.dsl.TargetFormat
57import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask
68import org.jetbrains.compose.internal.de.undercouch.gradle.tasks.download.Download
@@ -49,14 +51,18 @@ compose.desktop {
4951 application {
5052 mainClass = " processing.app.ProcessingKt"
5153
52- jvmArgs(* listOf (
53- Pair (" processing.version" , rootProject.version),
54- Pair (" processing.revision" , findProperty(" revision" ) ? : Int .MAX_VALUE ),
55- Pair (" processing.contributions.source" , " https://contributions.processing.org/contribs" ),
56- Pair (" processing.download.page" , " https://processing.org/download/" ),
57- Pair (" processing.download.latest" , " https://processing.org/download/latest.txt" ),
58- Pair (" processing.tutorials" , " https://processing.org/tutorials/" ),
59- ).map { " -D${it.first} =${it.second} " }.toTypedArray())
54+
55+ val variables = mapOf (
56+ " processing.group" to (rootProject.group.takeIf { it != " " } ? : " processing" ),
57+ " processing.version" to rootProject.version,
58+ " processing.revision" to (findProperty(" revision" ) ? : Int .MAX_VALUE ),
59+ " processing.contributions.source" to " https://contributions.processing.org/contribs" ,
60+ " processing.download.page" to " https://processing.org/download/" ,
61+ " processing.download.latest" to " https://processing.org/download/latest.txt" ,
62+ " processing.tutorials" to " https://processing.org/tutorials/"
63+ )
64+
65+ jvmArgs(* variables.entries.map { " -D${it.key} =${it.value} " }.toTypedArray())
6066
6167 nativeDistributions{
6268 modules(" jdk.jdi" , " java.compiler" , " jdk.accessibility" , " java.management.rmi" , " java.scripting" , " jdk.httpserver" )
@@ -111,21 +117,22 @@ dependencies {
111117 implementation(compose.ui)
112118 implementation(compose.components.resources)
113119 implementation(compose.components.uiToolingPreview)
120+ implementation(compose.materialIconsExtended)
114121
115122 implementation(compose.desktop.currentOs)
116123
117124 implementation(libs.compottie)
118125 implementation(libs.kaml)
119126 implementation(libs.markdown)
120127 implementation(libs.markdownJVM)
128+ implementation(gradleApi())
129+ implementation(libs.clikt)
130+ implementation(libs.kotlinxSerializationJson)
121131
122132 testImplementation(kotlin(" test" ))
123133 testImplementation(libs.mockitoKotlin)
124134 testImplementation(libs.junitJupiter)
125135 testImplementation(libs.junitJupiterParams)
126-
127- implementation(libs.clikt)
128- implementation(libs.kotlinxSerializationJson)
129136}
130137
131138tasks.test {
@@ -390,32 +397,14 @@ tasks.register<Copy>("includeJavaModeResources") {
390397 from(java.layout.buildDirectory.dir(" resources-bundled" ))
391398 into(composeResources(" ../" ))
392399}
393- // TODO: Move to java mode
394- tasks.register<Copy >(" renameWindres" ) {
395- dependsOn(" includeSharedAssets" ," includeJavaModeResources" )
396- val dir = composeResources(" modes/java/application/launch4j/bin/" )
397- val os = DefaultNativePlatform .getCurrentOperatingSystem()
398- val platform = when {
399- os.isWindows -> " windows"
400- os.isMacOsX -> " macos"
401- else -> " linux"
402- }
403- from(dir) {
404- include(" *-$platform *" )
405- rename(" (.*)-$platform (.*)" , " $1$2" )
406- }
407- duplicatesStrategy = DuplicatesStrategy .INCLUDE
408- into(dir)
409- }
410400tasks.register(" includeProcessingResources" ){
411401 dependsOn(
412402 " includeCore" ,
413403 " includeJavaMode" ,
414404 " includeSharedAssets" ,
415405 " includeProcessingExamples" ,
416406 " includeProcessingWebsiteExamples" ,
417- " includeJavaModeResources" ,
418- " renameWindres"
407+ " includeJavaModeResources"
419408 )
420409 mustRunAfter(" includeJdk" )
421410 finalizedBy(" signResources" )
@@ -495,9 +484,9 @@ tasks.register("signResources"){
495484 }
496485 file(composeResources(" Info.plist" )).delete()
497486 }
487+ }
498488
499489
500- }
501490tasks.register(" setExecutablePermissions" ) {
502491 description = " Sets executable permissions on binaries in Processing.app resources"
503492 group = " compose desktop"
@@ -522,6 +511,8 @@ tasks.register("setExecutablePermissions") {
522511afterEvaluate {
523512 tasks.named(" prepareAppResources" ).configure {
524513 dependsOn(" includeProcessingResources" )
514+ // Make sure all libraries are bundled in the maven repository distributed with the app
515+ dependsOn(listOf (" core" ," java:preprocessor" , " java:gradle" , " java:gradle:hotreload" ).map { project(" :$it " ).tasks.named(" publishAllPublicationsToAppRepository" ) })
525516 }
526517 tasks.named(" createDistributable" ).configure {
527518 dependsOn(" includeJdk" )
0 commit comments