mirror of
https://github.com/apple/pkl.git
synced 2026-01-14 15:43:41 +01:00
Motivation: Spring Boot configuration classes neither require nor benefit from annotating constructor parameters with their name. The same is true for pkl-config-java configuration classes compiled with `-parameter`. Changes: - Change CLI parameter `--params-annotation` to accept a `none` value. This is recommended in https://clig.dev/#arguments-and-flags and is how the `-F` parameter of the `ssh` command works. - Change `paramsAnnotation` property in Gradle plugin, CliJavaCodeGeneratorOptions, and JavaCodegenOptions as follows: - Change meaning of `null` from "generate org.pkl.java.config.mapper.Named annotations" to "do not generate annotations". This is a breaking change (only) affecting users who explicitly set the property to `null` instead of omitting it. - Change property default from `null` to: `null` if `generateSpringBootConfig` is `true` and `org.pkl.java.config.mapper.Named` otherwise - add tests - update docs of this and other codegen options Result: Generated code does not contain unnecessary annotations.
78 lines
2.5 KiB
Plaintext
78 lines
2.5 KiB
Plaintext
.--indent
|
|
[%collapsible]
|
|
====
|
|
Default: `" "` (two spaces) +
|
|
Example: `"\t"` (one tab) +
|
|
The characters to use for indenting generated source code.
|
|
====
|
|
|
|
.-o, --output-dir
|
|
[%collapsible]
|
|
====
|
|
Default: (not set) +
|
|
Example: `generated/` +
|
|
The directory where generated source code is placed.
|
|
Relative paths are resolved against the working directory.
|
|
====
|
|
|
|
.--generate-spring-boot
|
|
[%collapsible]
|
|
====
|
|
Default: (not set) +
|
|
Flag that indicates to generate config classes for use with Spring Boot.
|
|
====
|
|
|
|
.--implement-serializable
|
|
[%collapsible]
|
|
====
|
|
Default: (not set) +
|
|
Flag that indicates to generate classes that implement `java.io.Serializable`.
|
|
====
|
|
|
|
.--rename
|
|
[%collapsible]
|
|
====
|
|
Default: (none) +
|
|
Example: `foo.=com.example.foo.` +
|
|
Allows to change default class and package names (derived from Pkl module names) in the generated code.
|
|
|
|
When you need the generated class or package names to be different from the default names derived from the Pkl module names, you can define a rename mapping, where the key is the original Pkl module name prefix, and the value is its replacement.
|
|
When you do, the generated code's `package` declarations, class names, as well as file locations, will be modified according to this mapping.
|
|
|
|
The prefixes are replaced literally, which means that dots at the end are important.
|
|
If you want to rename packages only, in most cases, you must ensure that you have an ending dot on both sides of a mapping (except for an empty mapping, if you use it), otherwise you may get unexpected results:
|
|
|
|
----
|
|
// Assuming the following arguments:
|
|
--rename com.foo.=x // Dot on the left only
|
|
--rename org.bar=y. // Dot on the right only
|
|
--rename net.baz=z // No dots
|
|
|
|
// The following renames will be made:
|
|
"com.foo.bar" -> "xbar" // Target prefix merged into the suffix
|
|
"org.bar.baz" -> "y..baz" // Double dot, invalid name
|
|
"net.baz.qux" -> "z.qux" // Looks okay, but...
|
|
"net.bazqux" -> "zqux" // ...may cut the name in the middle.
|
|
----
|
|
|
|
When computing the appropriate target name, the longest matching prefix is used:
|
|
|
|
----
|
|
// Assuming the following arguments:
|
|
--rename com.foo.Main=w.Main
|
|
--rename com.foo.=x.
|
|
--rename com.=y.
|
|
--rename =z.
|
|
|
|
// The following renames will be made:
|
|
com.foo.Main -> w.Main
|
|
com.foo.bar -> x.bar
|
|
com.baz.qux -> y.baz.qux
|
|
org.foo.bar -> z.org.foo.bar
|
|
----
|
|
|
|
Repeat this option to define multiple mappings.
|
|
Keys can be arbitrary strings, including an empty string.
|
|
Values must be valid dot-separated fully qualified class name prefixes, possibly terminated by a dot.
|
|
====
|