java - Jaxb 不保留包中命名空间的大小写

标签 java xml maven jaxb xsd

我正在使用 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/

相关文章:

Maven 使用三叶草插件运行两次单元测试

java - IllegalArgumentException Cucumber 自定义参数 Java

java - 如何使用 Java Selenium 捕获远程网站

ruby-on-rails - 在 Ruby 的构建器中自定义节点名称

C++ 声明式解析序列化

android - “没有适用的市场商品”试图发现android连接器

java - NoSuchMethodError - org.hibernate.cfg.Environment

java - 分配2个ips给不同的tomcat webapps

ios - Web 服务如何工作?

maven - 安装具有 3rd-party non-mvn jar 依赖项的 3rd-party non-mvn jar