5

我正在使用 codehaus jaxb2-maven-pluginv1.5 将 XSD 编译为 POJO,但是生成的包名称将包名称强制为小写(因此,如果我的目标命名空间为http://example.com/sampleNamespace,那么生成的包是com.example.samplenamespace)。

我用谷歌搜索了一下,发现大多数人都有下划线变成点的问题,以及解决方案,但我似乎找不到特定的东西来保留命名空间的大小写。

注意:我不想重复自己并覆盖生成的包名称,因此 maven 配置中的 generatePackage 选项不适合我。

在找到下划线 munging 之前,我已经尝试过,还有一个常规空格 - 两者都在那里粘贴一个点。

有任何想法吗?

架构:

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:t="http://example.com/sampleNamespace" targetNamespace="http://example.com/sampleNamespace"
jaxb:version="2.0">

    <complexType name="MyFirstClass">
        <sequence>
            <element name="MyFirstElement" type="string" />
        </sequence>
    </complexType>
</schema>

Maven配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <goals>
                <goal>xjc</goal>
            </goals>
        </execution>
    </executions>
</plugin>
4

1 回答 1

1

如果您不想使用 JAXB 基于常见 Java 编码转换生成的包名称,则需要利用 JAXB 绑定文件来指定包名称。

<bindings 
  xmlns="http://java.sun.com/xml/ns/jaxb" 
  version="2.1">
  <bindings schemaLocation="schema.xsd">
    <schemaBindings>
      <package name="com.example.sampleNamespace"/>
    </schemaBindings>
  </bindings>
</bindings>
于 2013-10-31T20:26:51.723 回答