16

当我使用maven-jaxb2-plugin生成 JAXB 类时,我得到带有部分(!?)德语 Javadoc 的类。(我的默认语言环境:de_CH)

我想要的:英文Javadoc

我试图设置 maven opts:-Duser.language=en -Duser.country=US 但它没有效果。

如何使用英语 Javadoc 生成 JAXB 类?

这是一些带有部分德语 Javadoc 的 JAXB 类的 Javadoc:http: //drombler.sourceforge.net/DromblerACP/docs/site/0.2.1-SNAPSHOT/apidocs/org/drombler/acp/core/action/jaxb/package -frame.html

这是相应的 XSD:http: //sourceforge.net/p/dromler/drombler-acp/ci/default/tree/drombler-acp-core-action/src/main/resources/actions.xsd

这是相应的 POM:http: //sourceforge.net/p/dromler/drombler-acp/ci/default/tree/drombler-acp-core-action/pom.xml

相关的 JAXB 问题:

https://java.net/jira/browse/JAXB-1001

任何解决方法?

4

4 回答 4

17

args/arg您可以使用配置中的元素将任意属性传递给 XJC maven-jaxb2-plugin

<configuration>
    <extension>true</extension>
    <args>
        <arg>-Duser.language=en</arg>
    </args>
</configuration>

这些参数将被传递给 XJC。

但是我不知道是否-Duser.language=en -Duser.country=US是正确的选择。无论如何,args/arg将被传递给XJC。如果它不起作用,请在此处提出问题。

免责声明:我是 maven-jaxb2-plugin 的作者。

更新

此功能在版本中实现0.10.0。现在您可以执行以下操作:

        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <configuration>
                <locale>es</locale>
            </configuration>
        </plugin>
于 2014-03-19T18:29:31.457 回答
5

在 Windows 命令行中:

> SET JAVA_TOOL_OPTIONS=-Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8
> xjc .

用jdk9测试

于 2019-04-03T18:50:10.133 回答
0

这个错误似乎是一个回归,因为这个问题在以前的版本中不存在。

所以也许你可以使用org.codehaus.mojo:jaxb2-maven-plugin:1.5...

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>1.5</version>
</plugin>

注意:在 1.5 中,多次执行不起作用(请参阅jaxb2-maven-plugin 仅执行第一次执行)。我不知道他们是否会得到正确的插件。

于 2015-02-22T16:05:49.327 回答
0

我也需要这个....唯一合理的解决方法(对于 mojohaus/jaxb2-maven-plugin 等其他插件)是在生成文件之前调用 Locale.setDefault(YOURLANGUAGE) (在我的情况下生成 java 文件来自 xsd 和 xjc)...

例如,您可以使用 maven antrun 插件在执行生成之前设置默认语言环境:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <id>setLocaleFixedToUS</id>
            <phase>initialize</phase>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <target>
            <scriptdef name="setLocaleFixedToUS" language="javascript">
                <![CDATA[
                    importClass(java.util.Locale);
                    actualDefault = Locale.getDefault();
                    project.setProperty("actual-default-locale", actualDefault);
                    Locale.setDefault(Locale.US);
                ]]>
            </scriptdef>
            <setLocaleFixedToUS />
        </target>
    </configuration>
</plugin>

设置 -Duser.language=en -Duser.country=US 或命令行参数的所有其他解决方案也不适用于我。

于 2015-07-11T20:18:16.693 回答