mirror of
https://github.com/apple/pkl.git
synced 2026-06-07 22:32:53 +02:00
codegen-java: Support not annotating constructor parameters (#792)
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.
This commit is contained in:
@@ -192,6 +192,15 @@ public class PklPlugin implements Plugin<Project> {
|
||||
|
||||
spec.getGenerateGetters().convention(false);
|
||||
spec.getGenerateJavadoc().convention(false);
|
||||
// Not using `convention()` so that users can disable generation of
|
||||
// constructor parameters annotations by setting this property to `null`.
|
||||
spec.getParamsAnnotation()
|
||||
.set(
|
||||
project.provider(
|
||||
() ->
|
||||
spec.getGenerateSpringBootConfig().get()
|
||||
? null
|
||||
: "org.pkl.config.java.mapper.Named"));
|
||||
|
||||
createModulesTask(JavaCodeGenTask.class, spec)
|
||||
.configure(
|
||||
|
||||
Reference in New Issue
Block a user