properties.yaml (362 lines of code) (raw):
$schema: properties.schema.json
OrchestrationPort:
key: compose.reload.orchestration.port
type: int
target: [ build, devtools, application ]
documentation: |
Current 'Orchestration Server' port. This property is used by components that shall connect to the
'orchestration' (e.g. recompiler, devtools, ...)
PidFile:
key: compose.reload.pidFile
type: file
target: [ application, devtools ]
documentation: |
Path to the current applications pidfile
ArgFile:
key: compose.reload.argfile
type: file
target: [ application, devtools, build ]
documentation: |
The java 'argfile' (see: https://docs.oracle.com/en/java/javase/21/docs/specs/man/java.html#java-command-line-argument-files)
containing all arguments of the current run
MainClass:
key: compose.reload.mainClass
type: string
target: [ application, devtools ]
documentation: |
Property available in the application and 'devtools' pointing to the mainClass used to launch the application
IsHeadless:
key: compose.reload.headless
type: boolean
default: "false"
target: [ application, devtools, build ]
documentation: |
Indicating whether or not the application is supposed to run in headless mode
IsHotReloadBuild:
key: compose.reload.isHotReloadBuild
type: boolean
default: "false"
target: [ build ]
documentation: |
Available in the build (e.g. Gradle) to indicate whether or not the current build is intended
to recompile classes for a hot reload build. Typically, this property is used to disable tasks
which are not required to produce classes and improve build speed.
HotClasspath:
key: compose.reload.hotApplicationClasspath
type: string
target: [ application ]
documentation: |
The classpath known to be hot. This property is optional
VirtualMethodResolveEnabled:
key: compose.reload.virtualMethodResolveEnabled
type: boolean
default: "true"
target: [ application, build ]
documentation: |
true: Enable dependency analysis for virtual calls:
e.g. Interfaces and their corresponding implementations will be tracked
DirtyResolveDepthLimit:
key: compose.reload.dirtyResolveDepthLimit
type: int
default: "5"
target: [ application, build ]
documentation: |
If a given scope is marked as dirty, then Hot Reload will follow the dependency graph between fields/methods
and further marks scopes as dirty. This property limits how deep this graph can be traversed.
BuildSystem:
key: compose.reload.buildSystem
type: enum
enumClass: org.jetbrains.compose.reload.core.BuildSystem
target: [ application, devtools ]
documentation: |
Indicating the application which build system is supposed to be used for recompiling.
See further build-system specific (Gradle, Amper, ...) properties.
GradleJavaHome:
key: org.gradle.java.home
type: file
target: [ application, devtools ]
documentation: |
The 'java home' used to run Gradle. The recompiler will pick the same java to launch
the recompiler in order to avoid cache misses or other issues.
GradleOfflineMode:
key: gradle.offline.mode
type: boolean
default: "false"
target: [ application, devtools ]
documentation: |
The 'offline mode' used to run Gradle. The recompiler will pick the same offline mode to launch
the recompiler in order to avoid cache misses or other issues.
GradleBuildRoot:
key: gradle.build.root
type: file
target: [ application, devtools ]
documentation: |
The root path to the current Gradle project
GradleBuildProject:
key: gradle.build.project
type: string
target: [ application, devtools ]
documentation: |
The gradle 'path' to the 'project' which is currently executed and needs recompiling.
e.g. ':app:' or ':' or ':someModule:composeApp'
GradleBuildTask:
key: gradle.build.task
type: string
target: [ application, devtools ]
documentation: |
The name of the task which is supposed to be recompiled for hot reload.
This is typically the name of a 'ComposeReloadHotClasspathTask' task.
GradleBuildContinuous:
key: compose.reload.build.continuous
type: boolean
default: "false"
target: [ application, devtools, build ]
visibility: delicate
documentation: |
- true: Compose Hot Reload will start a recompiler Gradle Daemon, which will continuously rebuilt/reload the project
by watching all inputs to the build
- false: The user is expected to rebuild/reload manually by launching a task (or using tooling)
Continuous mode is subject to change and might be removed in the future.
GradleWarmupEnabled:
key: compose.reload.build.warmup
type: boolean
default: "false"
target: [ application, devtools, build ]
visibility: delicate
documentation: |
- true: Compose Hot Reload will launch a warmup recompile request when the application is started, to ensure that
the recompiler Gradle daemon is running and ready to handle requests
- false: No warmup request will be sent, first reload request may take longer time
GradleBuildOptimize:
key: compose.reload.gradle.build.optimize
type: boolean
default: "true"
target: [ application, devtools, build ]
visibility: delicate
documentation: |
- true: Compose Hot Reload will try to optimize your build during hot reload
(e.g. by enabling Gradle's configuration cache during 'recompilation')
- false: No optimization will be performed.
AmperBuildRoot:
key: amper.build.root
type: string
target: [ application, devtools ]
AmperBuildTask:
key: amper.build.task
type: string
target: [ application, devtools ]
DevToolsEnabled:
key: compose.reload.devToolsEnabled
type: boolean
default: "true"
target: [ application, devtools, build ]
visibility: public
documentation: |
Flag to disable the 'devtools' application entirely
DevToolsIsHeadless:
key: compose.reload.devToolsHeadless
type: boolean
default: "false"
target: [ application, devtools, build ]
visibility: public
documentation: |
Run the dev tools in headless mode (No UI window shown)
DevToolsClasspath:
key: compose.reload.devToolsClasspath
type: files
target: [ application ]
documentation: |
The classpath notation of the devTools application.
Hot Reload will start DevTools in a different process and therefore needs the classpath
DevToolsTransparencyEnabled:
key: compose.reload.devToolsTransparencyEnabled
type: boolean
default: "(Os.currentOrNull() != Os.Linux).toString()"
defaultIsExpression: true
target: [ application, build, devtools ]
visibility: delicate
documentation: |
Some platforms might not be able to render transparency correctly (e.g. some linux environments).
This property will allow such platforms to disable/enable transparency. This property is subject to change
if the issues with transparency rendering are resolved..
DevToolsDetached:
key: compose.reload.devToolsDetached
type: boolean
default: "false"
target: [ application, build, devtools ]
visibility: public
documentation: |
If enabled, dev tools window will be detached from the main application
ReloadEffectsEnabled:
key: compose.reload.effectsEnabled
type: boolean
default: "true"
target: [ application, build ]
visibility: public
documentation: |
Enable reload effects that are shown in the UI when a reload is triggered.
IntelliJDebuggerDispatchPort:
key: compose.reload.idea.debugger.dispatch.port
type: int
target: [ application, devtools, build ]
documentation: |
Note: Expected as an environment variable, as this is expected to be transitively available
to all child processes.\n
Currently, launching applications with hot reload might be done through a couple of
intermediate processes. For example, launching a test will go through a chain like
```
intellij --launches--> Gradle --launches--> JVM(Junit) --launches--> Gradle
--launches--> JVM (Application)
```
When a run configuration is started in 'debug mode' intellij will set the system property
'idea.debugger.dispatch.port'. This will indicate that a server is listening at this port, which can
be used to provision debugging servers.
This debug port will then be made available as an environment variable using this key.
Launching the final application will respect this port, if present and provision a debugging session.
This will allow a test to be deeply debuggable by just pressing 'Debug'
SubprocessDebuggingEnabled:
key: compose.reload.subprocessDebuggingEnabled
type: boolean
default: "false"
target: [ build ]
documentation: |
Enable this property to allow propagating the 'idea.debugger.dispatch.port' to all subprocesses.
This is useful when debugging dev tools. Note: this may break the debugging of the user application if IJ is
not configured to accept multiple debugging sessions. Not recommended to use outside of hot reload debugging.
JetBrainsRuntimeBinary:
key: compose.reload.jbr.binary
type: file
target: [ build ]
visibility: delicate
documentation: |
The path to the 'JetBrainsRuntime' which shall be used when launching the app.
Note: This is a build-only property!
JetBrainsRuntimeVersion:
key: compose.reload.jbr.version
type: int
default: "21"
target: [ build ]
visibility: delicate
documentation: |
Specifies the default 'JetBrains Runtime' version that shall be used (e.g. '21' or '25')
AutoRuntimeDependenciesEnabled:
key: compose.reload.autoRuntimeDependenciesEnabled
type: boolean
default: "true"
target: [ build ]
documentation: |
Whether or not the hot-reload-runtime will be added as a compile dependency automatically when running a build.
IdeaComposeHotReload:
key: idea.compose.hot-reload
type: boolean
target: [ build, application, devtools ]
default: "false"
documentation: |
Set by IntelliJ to signal the Gradle Plugin that IDE tooling is available.
Setting this variable will relax the Gradle Plugin to not touch existing run tasks as we expect
the IDE to provide a convenient way of launching in hot-reload mode.
IdeaComposeHotReloadSupportVersion:
key: idea.compose.hot-reload.version
type: int
target: [ build, application, devtools ]
documentation: |
Set by IntelliJ during builds to convey its 'support level' for hot reload.
Not Present, but 'idea.compose.hot-reload' being set: Supports running hot run tasks
2: Support running 'hot run' tasks and 'hot reload' tasks
3: Supports providing IDEA runtime using 'idea.compose.hot-reload.jbr'
IdeaJetBrainsRuntimeBinary:
key: idea.compose.hot-reload.jbr
type: file
target: [ build ]
documentation: |
Forwards the 'JetBrains Runtime' which is bundled with the current version of IntelliJ
- (Points to the binary (bin/java))
- Can be used as 'fallback' when no other JBR is found
StdinFile:
key: compose.reload.stdinFile
type: file
target: [ build, application, devtools ]
visibility: delicate
documentation: |
Used by 'async'/'non-blocking' launches of the application.
Will point to the stdin file (can be pipe)
'async'/'non-blocking' mode is subject to change and might be removed in the future.
StdoutFile:
key: compose.reload.stdoutFile
type: file
target: [ build, application, devtools ]
visibility: delicate
documentation: |
Used by 'async'/'non-blocking' launches of the application.
Will point to a file where the stdout is supposed to be written to.
'async'/'non-blocking' mode is subject to change and might be removed in the future.
StderrFile:
key: compose.reload.stderrFile
type: file
target: [ build, application, devtools ]
visibility: delicate
documentation: |
Used by 'async'/'non-blocking' launches of the application.
Will point to a file where the stderr is supposed to be written to.
'async'/'non-blocking' mode is subject to change and might be removed in the future.
ParentPid:
key: compose.reload.parentPid
type: long
target: [ devtools, build ]
documentation: |
The pid of the parent process. This property is used by components that shall connect to the
'orchestration' (e.g. recompiler, devtools, ...).
If the parent dies, it is expected that children exit as well.
LaunchMode:
key: compose.reload.launchMode
type: enum
enumClass: org.jetbrains.compose.reload.core.LaunchMode
target: [ application, devtools ]
documentation: |
Tells the application 'how' it was launched
LogLevel:
key: compose.reload.logLevel
type: enum
enumClass: org.jetbrains.compose.reload.core.Logger.Level
target: [ application, devtools, build ]
default: "Info"
visibility: public
documentation: |
Minimum logging level
LogStdout:
key: compose.reload.logStdout
type: boolean
target: [ application, build, devtools ]
default: "false"
visibility: public
documentation: |
Enable output of all logs into the standard output
IsHotReloadActive:
key: compose.reload.isActive
type: boolean
target: [ application ]
default: "false"
visibility: public
documentation: |
Will be set to 'true' if the application is launched with Hot Reload and therefore can be used
to detect if hot reload is 'active'
IsolatedProjectsEnabled:
key: compose.reload.isolatedProjectsEnabled
type: boolean
target: [ application, build, devtools ]
default: "false"
visibility: deprecated
documentation: |
Enables support for Gradle's incubating 'isolated projects' feature
StaticsReinitializeMode:
key: compose.reload.staticsReinitializeMode
type: enum
enumClass: org.jetbrains.compose.reload.core.StaticsReinitializeMode
target: [ application ]
default: "AllDirty"
visibility: experimental
documentation: |
Sets the mode for statics re-initialization.
When "AllDirty" is set, all static initializers that are recognized as dirty (affected by changes)
will be re-invoked on reload.
When "ChangedOnly" is set, only statics of changed classes will be re-initialized.