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" )
@@ -110,20 +116,21 @@ dependencies {
110116 implementation(compose.ui)
111117 implementation(compose.components.resources)
112118 implementation(compose.components.uiToolingPreview)
119+ implementation(compose.materialIconsExtended)
113120
114121 implementation(compose.desktop.currentOs)
115122
116123 implementation(libs.compottie)
117124 implementation(libs.kaml)
118125 implementation(libs.markdown)
119126 implementation(libs.markdownJVM)
127+ implementation(gradleApi())
128+ implementation(libs.clikt)
120129
121130 testImplementation(kotlin(" test" ))
122131 testImplementation(libs.mockitoKotlin)
123132 testImplementation(libs.junitJupiter)
124133 testImplementation(libs.junitJupiterParams)
125-
126- implementation(libs.clikt)
127134}
128135
129136tasks.test {
@@ -405,23 +412,6 @@ tasks.register<Copy>("includeJavaModeResources") {
405412 from(java.layout.buildDirectory.dir(" resources-bundled" ))
406413 into(composeResources(" ../" ))
407414}
408- // TODO: Move to java mode
409- tasks.register<Copy >(" renameWindres" ) {
410- dependsOn(" includeSharedAssets" ," includeJavaModeResources" )
411- val dir = composeResources(" modes/java/application/launch4j/bin/" )
412- val os = DefaultNativePlatform .getCurrentOperatingSystem()
413- val platform = when {
414- os.isWindows -> " windows"
415- os.isMacOsX -> " macos"
416- else -> " linux"
417- }
418- from(dir) {
419- include(" *-$platform *" )
420- rename(" (.*)-$platform (.*)" , " $1$2" )
421- }
422- duplicatesStrategy = DuplicatesStrategy .INCLUDE
423- into(dir)
424- }
425415tasks.register(" includeProcessingResources" ){
426416 dependsOn(
427417 " includeJdk" ,
@@ -430,8 +420,7 @@ tasks.register("includeProcessingResources"){
430420 " includeSharedAssets" ,
431421 " includeProcessingExamples" ,
432422 " includeProcessingWebsiteExamples" ,
433- " includeJavaModeResources" ,
434- " renameWindres"
423+ " includeJavaModeResources"
435424 )
436425 finalizedBy(" signResources" )
437426}
@@ -510,9 +499,9 @@ tasks.register("signResources"){
510499 }
511500 file(composeResources(" Info.plist" )).delete()
512501 }
502+ }
513503
514504
515- }
516505tasks.register(" setExecutablePermissions" ) {
517506 description = " Sets executable permissions on binaries in Processing.app resources"
518507 group = " compose desktop"
@@ -537,6 +526,8 @@ tasks.register("setExecutablePermissions") {
537526afterEvaluate {
538527 tasks.named(" prepareAppResources" ).configure {
539528 dependsOn(" includeProcessingResources" )
529+ // Make sure all libraries are bundled in the maven repository distributed with the app
530+ dependsOn(listOf (" core" ," java:preprocessor" , " java:gradle" ).map { project(" :$it " ).tasks.named(" publishAllPublicationsToAppRepository" ) })
540531 }
541532 tasks.named(" createDistributable" ).configure {
542533 finalizedBy(" setExecutablePermissions" )
0 commit comments