我有这样的Maven “任务”,从使用JAXB XSD文件生成Java类。

        <!-- XML to Java classes -->
        <plugin>
            <groupId>com.sun.tools.xjc.maven2</groupId>
            <artifactId>maven-jaxb-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <generatePackage>nl.compay.service</generatePackage>
                <schemaDirectory>src/main/webapp/compay</schemaDirectory>
            </configuration>
        </plugin>

有关的XSD类型“用户”,它生成一个命名为“用户”(杜)类。不过,我也有一个名为“用户” JPA实体类(虽然在不同的包)。 我可以改变上面的XML配置,让JAXB的东西,如“XML”?

前缀生成的类
有帮助吗?

解决方案

这是一种常见的要求。您可以通过提供额外的JAXB绑定文件来定制JAXB如何转化的模式类型名称到Java类的名称做。

这些文件通常结束扩展名“.xjb”。您需要创建一个为您的架构,例如:

<jxb:bindings version="1.0" 
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
  jxb:extensionBindingPrefixes="xjc">

    <jxb:bindings schemaLocation="nl.company.service.xsd" node="/xs:schema">
        <jxb:schemaBindings>
            <jxb:nameXmlTransform>
                <jxb:typeName prefix="XML"/>
                <jxb:anonymousTypeName prefix="XML"/>
            </jxb:nameXmlTransform>
        </jxb:schemaBindings>
    </jxb:bindings>

</jxb:bindings>

你这样做之后,某处掉落XJB文件在你的build目录,并告诉Maven的转换过程中使用它:

<includeBindings>
    <includeBinding>mybindings.xjb</includeBinding>
</includeBindings>

和这里的道路的提示:如果你是在包含空格(例如“文档和Settings \用户\项目”)的路径,然后将JAXB翻倒用奇怪的错误

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top