bjornvester / xjc-gradle-plugin

A Gradle plugin for running the XJC binding compiler to generate JAXB Java source code from XSD schemas
MIT License
58 stars 9 forks source link

Configure language for JavaDoc generation #36

Open henning-meinhardt opened 6 months ago

henning-meinhardt commented 6 months ago

Hi, i'm missing an option to specify the language code or locale to use when invoking XJC. The current behavior is that environment variable LANG decides which language is selected for generating the JavaDoc comments in the generated files. I would like to have this reproducible, so I'd like a way to define the language on my own.

You currently use // Set encoding (work-around for https://github.com/gradle/gradle/issues/13843) forkOptions.environment("LANG", System.getenv("LANG") ?: "C.UTF-8") which basically passes the LANG envionment variable down to the XJC worker. But unfortunately LANG is nothing you can control from within a gradle build script or the gradle.properties file. The environment variable can only be set outside of the gradle script, i.e. its value depends on the environment found when the script runs.

My suggestion is to provide a "language" or "locale" option in the XJCExtension that is honored in the forkOptions code above.

I'm using Gradle 8.5 by the way.

Kind regards Henning

henning-meinhardt commented 4 months ago

Hi, any suggestion for a workaround for this?

wursthos commented 2 months ago

Hey Henning,

I fixed this issue by simply putting the following option into my gradle build script:

xjc {
    /* This option makes sure generated javadoc is in english
     * as opposed to the locale of the current system. */
    options.add("-Duser.language=en")
    // ...
}

Worked like a charm.

henning-meinhardt commented 2 months ago

Hi @wursthos , sorry for my late reply. I already tried that before and just did so again. It does not seem to work for me. The setting does not afffect the language of generated JavaDoc comments ;-( I'm using the latest version of the xjc-gradle-plugin and have the following defined in my gradle script:

xjc {
    String schemaPath = "webapp/WEB-INF/schema"
    xsdDir = layout.projectDirectory.dir (schemaPath)
    includes = [ "xxxxx.xsd" ]
    bindingFiles.setFrom (xsdDir.asFileTree.matching { include ("xxxxx.xjb") })
    outputJavaDir = file (generatedSourcesDir)
    useJakarta = true
    addCompilationDependencies = true
    options.add ("-Duser.language=es")
    options.add ("-Xannotate")
    options.add ("-Xfluent-api")
    options.add ("-Xcopyable")
}

The output does not change when adjusting the language. I made sure that the gradle task is not cached.

Are you sure to use the same plugin an I do and not jaxb2-maven-plugin which has dedicated support for the "-Duser.language" parameter (https://github.com/mojohaus/jaxb2-maven-plugin/issues/9)?