pkl icon indicating copy to clipboard operation
pkl copied to clipboard

Allow overriding Java/Kotlin package name in codegen

Open netvl opened this issue 9 months ago • 0 comments

Currently the package name for the classes generated from Pkl modules (when using the Gradle plugin or the CLI) is always derived from the module name defined within the Pkl module file:

open module org.example.Whatever

This is, however, not very flexible, because there are use cases when the module name's prefix and the desired Java/Kotlin package name may differ. For example, when publishing Pkl packages (with PklProject) it is expected that the module name prefix matches the Pkl package name:

// Within package://some-repo.com/some-org/[email protected]#/SomeModule.pkl:

open module some_package.SomeModule

...

However, if a project already uses some particular JVM package name, it would be necessary either to change the Pkl package name:

package://some-repo.com/some-org/[email protected]#/SomeModule.pkl

which is often inconvenient, or to live with the fact that Java classes will have different package names.

It would be nice if there was an option to override the generated classes' package name via a CLI argument or via a Gradle configuration option:

pkl.javaCodeGenerators.create("someClasses") {
    packageMappings.put("some_package", "com.some.org.config")
}

netvl avatar Apr 26 '24 00:04 netvl