This change speeds up incremental build of
an application image.
For example, for one (relatively small) tested application
the overall time spent on creating binary images in incremental case
(after one file change) went from ~5 seconds down to 1.4 seconds
(non-rigorous benchmark using a relatively fast 8-core 2.3Ghz i9 MBP).
Useful for troubleshooting and experimentation
(e.g. re-run tool in CLI with different args).
To enable:
* Add 'compose.preserve.working.dir=true' to gradle.properties;
* Add '-Pcompose.preserve.working.dir=true' to CLI args.
There are two versions used in the Gradle plugin:
* The version of the plugin itself;
* The version of Compose dependency used by the plugin.
On CI both versions are set to the same value specific to the build.
However, locally using 0.1.0-SNAPSHOT for the Compose version is inconvenient,
because we don't publish 0.1.0-SNAPSHOT anywhere.
Even if it existed, a moving version is not convenient for using in tests.
This commit changes version handling:
* The version of Compose is set via `compose.version` Gradle property
to the latest stable version, unless overridden by
`COMPOSE_GRADLE_PLUGIN_COMPOSE_VERSION` env. var.
* The version of the plugin is set via `deploy.version`
Gradle property to 0.1.0-SNAPSHOT,
unless overridden by `COMPOSE_GRADLE_PLUGIN_VERSION` env. var
For some reason, the compiler failed to resolve the method reference correctly.
Also minor fix for `executable` property (the code was red in IDE, but compiled).
This change removes `org.jetbrains.compose.desktop.application` plugin id
in favor of doing everything in `org.jetbrains.compose`.
The change simplifies configuring Compose Desktop projects.
Now, just one plugin dependency is needed.
To avoid task name conflicts with common task names such as `package` and `run`,
the plugin creates tasks lazily only if `application` block/property is used in a script.