-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy pathproperties.yaml
More file actions
449 lines (401 loc) · 15.5 KB
/
Copy pathproperties.yaml
File metadata and controls
449 lines (401 loc) · 15.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
$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.
GradleBuildOptimizeUnsafe:
key: compose.reload.gradle.build.optimize.unsafe
type: boolean
default: "false"
target: [ application, devtools, build ]
visibility: delicate
documentation: |
- true: Compose Hot Reload will pass '-Pkotlin.internal.incremental.enableUnsafeOptimizationsForMultiplatform=true'
to Gradle during recompilation. This may improve incremental compilation performance but can cause unexpected
Kotlin compiler crashes (see https://youtrack.jetbrains.com/issue/CMP-10146).
- false: The unsafe incremental compilation optimization for multiplatform will not be enabled.
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: "25"
target: [ build ]
visibility: delicate
documentation: |
Specifies the default 'JetBrains Runtime' version that shall be used when the
user project does not explicitly declare toolchain requirements.
JetBrainsRuntimeMinimalVersion:
key: compose.reload.jbr.min.version
type: int
default: "21"
target: [ build ]
visibility: internal
documentation: |
Specifies the minimal 'JetBrains Runtime' version required by Compose Hot Reload.
If the project's toolchain language version is set but is lower than this value,
the plugin will override it and use this version instead.
GradleJetBrainsRuntimeProvisioningEnabled:
key: compose.reload.jbr.gradleProvisioningEnabled
type: boolean
default: "true"
target: [ build ]
visibility: internal
documentation: |
If enabled Compose Hot Reload Gradle plugin will attempt to automatically provision compatible 'JetBrains Runtime'
version via Gradle's toolchain resolution mechanism. This property is internal and only indended for use in tests.
AutoJetBrainsRuntimeProvisioningEnabled:
key: compose.reload.jbr.autoProvisioningEnabled
type: boolean
default: "false"
target: [ build ]
visibility: experimental
documentation: |
Automatically provisions compatible 'JetBrains Runtime' version that shall be used for hot reload tasks
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, build ]
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.