mirror of
https://github.com/apple/pkl.git
synced 2026-01-18 17:37:07 +01:00
Allow renaming Java/Kotlin classes/packages during code generation (#499)
Adds a `rename` field to the Java/Kotlin code generators that allows renaming packages and classes during codegen. * Add `--rename` flag to CLIs * Add `rename` property to Gradle API
This commit is contained in:
@@ -164,13 +164,6 @@ This annotation is required to have `java.lang.annotation.ElementType.TYPE_USE`
|
||||
or it may generate code that does not compile.
|
||||
====
|
||||
|
||||
.--implement-serializable
|
||||
[%collapsible]
|
||||
====
|
||||
Default: (flag not set) +
|
||||
Whether to make generated classes implement `java.io.Serializable`.
|
||||
====
|
||||
|
||||
Common code generator options:
|
||||
|
||||
include::{partialsdir}/cli-codegen-options.adoc[]
|
||||
|
||||
@@ -21,3 +21,57 @@ Relative paths are resolved against the working directory.
|
||||
Default: (not set) +
|
||||
Flag that indicates to generate config classes for use with Spring Boot.
|
||||
====
|
||||
|
||||
.--implement-serializable
|
||||
[%collapsible]
|
||||
====
|
||||
Default: (not set) +
|
||||
Whether to make generated classes 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.
|
||||
====
|
||||
|
||||
Reference in New Issue
Block a user