我正在使用 codehaus jaxb2-maven-plugin
, v1.5 将 XSD 编译成 POJO,但是生成的包名称将包名称强制为小写(所以,如果我有我的目标命名空间为 http://example.com/sampleNamespace ,则生成的包为 com.example.samplenamespace
).
我在谷歌上搜索了一下,发现大多数人都遇到下划线被弄成点的问题,以及解决方案,但我似乎找不到特定的东西来保留命名空间的大小写。
注意:我不想重复自己并覆盖生成的包名称,因此 Maven 配置中的 generatePackage 选项不适合我。
在发现下划线修改之前,我已经尝试过了,还有一个常规空格 - 都在其中加了一个点。
有什么想法吗?
架构:
<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>
最佳答案
如果您不想使用 JAXB 根据常见 Java 编码转换生成的名称,则需要利用 JAXB 绑定(bind)文件来指定包名称。
<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>
关于java - Jaxb 不保留包中命名空间的大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19695632/