* Improve error messages when checking tasks
Previously some errors in checkRuntime task
were reported as a nested exception.
By default, Gradle shows only top-level
error message of an exception, which
made some errors confusing.
For example, when javac was missing from JDK,
Gradle only showed "Could not infer Java runtime version for Java home directory".
The part that said javac was missing was only shown,
when Gradle was run with --stacktrace argument.
This is suboptimal UX, so this commit refactors
checkRuntime to make error messages more descriptive.
#3133
* Handle JDK 1.8 correctly
* Prebuild jdk version probe
* Fix signing bundle with Gradle 8.1 with configuration cache
Compose Gradle plugin was launching
`/usr/bin/security --find-identity` in a lazy property of
AbstractJPackageTask. Without the configuration cache
the computation was delayed to the execution phase.
However, configuration cache serializes all properties of
all configured tasks, so launching of `/usr/bin/security`
shifted to the configuration phase.
Gradle 8.1 started to throw an exception if an external process is
launched during configuration time.
This change explicitly moves the call to
`/usr/bin/security` to the execution phase.
Resolves#3060
* Turn off Gradle configuration cache for one test
In 991b7ff6a7 'nativeExecutables' was
renamed to 'nativeDistributions', however a later commit added error
messages that still reference the old DSL names.
Normally macOS Gatekeeper does not allow unsigned apps to run.
However, apps created on the same machine were allowed to run.
This allows developers to test package apps on their machines
without configuring Apple Developer ID.
Previously, the Compose Multiplatform Gradle plugin
simply did not do anything, when the signing was not configured.
However, in macOS Ventura the Gatekeeper checks
became stricker, so "unsigned" packaged apps started to
be shown as "damaged".
This seems to happen, because parts of a final app image
were signed. Also they were signed by different certificates
(a runtime image could be signed by a runtime vendor,
while Skiko binary is signed by JetBrains).
This change removes all signatures if signing is not configured.
See also https://bugs.openjdk.org/browse/JDK-8276150Fixes#2476
Previously, we were setting kotlin.jvmTarget version
to 1.8 if it was null or < 1.8.
As an unintended consequence we were also overriding
a version set by the jvmToolchain property.
So while users expected the jvmToolchain property
to set both jdk home & jdk target, we were quietly
overriding jdk target.
At the same time, Kotlin 1.7 sets the minimum
target version to 1.8 anyway, so our override
does not make sense with Kotlin 1.7+.
This commit removes overriding altogether.
Fixes#2511
ProGuard support has introduced `Release` build type in addition to the default one.
Prior to that there was the `package` task, which did not do anything by itself.
The `package` task existed purely for convenience: instead of running
the `packageMsi` on Windows and the `packageDmg` on macOS, a user could
run the `package` task to package an application into a format suitable for a host OS.
A similar task for the release build type should be called `packageRelease`.
However, this name conflicts with a task created by the `com.android.application`
plugin.
This change deprecates the `package` task and removes the `packageRelease` task.
`packageDistributionForCurrentOS` and `packageReleaseDistributionForCurrentOS` should be used instead.
Resolves#2345
* Minor: add cleanDirs util
* Generate constant for gradle plugin version
* Unpack icons using task instead of lazy property
Resolves#960
* Introduce K/N Desktop packaging for Mac
* Add appStore option
* Fix "--app-image" option
* Add appCategory option
* Document signing for the Apple App Store
* Fix system version in the Product Definition Property List
* fixup! Fix "--app-image" option
* fixup! Document signing for the Apple App Store
* fixup! Add appStore option
* fixup! Add appCategory option
* Add provisioningProfile option
* Add entitlementsFile option (needs to be customised if your Mac app uses entitlements not in the default file)
* Fix components script compilation
* Add script to run Gradle with Compose properties set up
It's useful for running a single task in
the included Compose build.
* Set default JVM target to 11 if it is lower
* Update Compose submodule
This reverts commit 5b34141cbe.
We have a compilation error:
```
e: /mnt/agent/work/737a92a2f69083c2/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/internal/validation/ValidatedMacOSSigningSettings.kt: (59, 20): Unresolved reference: keychainFile
```
When users run/package application we will configure Compose to work as standalone application.
It means we will override some global Swing properties in Compose initialization function:
- sets system property `apple.laf.useScreenMenuBar` to true
- sets system property `sun.java2d.uiScale`/`sun.java2d.uiScale.enabled` automatically on Linux
- sets UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
When users don't use those tasks (when they use Compose in an existing Swing application, or in an IDEA plugin),
this property will not be set, and so we will not override Swing globals.