首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jaxb2-maven-plugin通过命名空间创建包

jaxb2-maven-plugin通过命名空间创建包
EN

Stack Overflow用户
提问于 2015-03-11 19:16:47
回答 1查看 3.2K关注 0票数 3

我对org.codehaus.mojo有这个问题

jaxb2-maven-plugin

我有各种XSD-s,并且在属于相同名称空间的不同xsd-s中有相同的元素/类型。

现在我想知道我是否可以为不同的名称空间创建包,这样我就不会在其中有重复的类了?

这是我的pom.xml

代码语言:javascript
复制
<groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>${mvn-jaxb2-plugin.version}</version>

                <configuration>
                    <quiet>true</quiet>
                    <verbose>false</verbose>
                    <clearOutputDir>false</clearOutputDir>
                    <readOnly>true</readOnly>
                    <arguments>-mark-generated</arguments>
                </configuration>

                <executions>

                    <execution>
                    <id>teenus-meta</id>
                    <goals><goal>xjc</goal></goals>
                    <configuration>
                        <schemaDirectory>${project.basedir}/src/main/resources/schemas/teenus1</schemaDirectory>
                        <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
                        <packageName>ee.teenus</packageName>
                        <schemaFiles>one.xsd</schemaFiles>
                    </configuration>
                </execution>

                    <execution>
                        <id>vaetis</id>
                        <goals><goal>xjc</goal></goals>
                        <configuration>
                            <schemaDirectory>${project.basedir}/src/main/resources/schemas/teenus2</schemaDirectory>
                            <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
                            <packageName>ee.teenus2</packageName>
                            <schemaFiles>two.xsd</schemaFiles>
                        </configuration>
                    </execution>

                </executions>

此时,package1和package2包含相同的元素。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-06-17 14:34:33

最近,我需要来自各种xsd的用于不同名称空间的包。找到的解决方案是使用绑定文件。也许你应该使用绑定文件...

代码语言:javascript
复制
<executions>
    <execution>
        <id>one</id>
        <goals>
            <goal>xjc</goal>
        </goals>
        <configuration>
            <schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory>
            <schemaFiles>one.xsd</schemaFiles>
            <bindingDirectory>${basedir}/src/main/resources/binding</bindingDirectory>
            <bindingFiles>onebinding.xjb</bindingFiles>
            <outputDirectory>${basedir}/src/main/java</outputDirectory>
            <clearOutputDir>false</clearOutputDir>
            <extension>true</extension>
        </configuration>
    </execution>

    <execution>
        <id>two</id>
        <goals>
            <goal>xjc</goal>
        </goals>
        <configuration>
            <schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory>
            <schemaFiles>two.xsd</schemaFiles>
            <bindingDirectory>${basedir}/src/main/resources/binding</bindingDirectory>
            <bindingFiles>twobinding.xjb</bindingFiles>
            <outputDirectory>${basedir}/src/main/java</outputDirectory>
            <clearOutputDir>false</clearOutputDir>
            <extension>true</extension>
        </configuration>
    </execution>
</executions>

onebinding.xjb

代码语言:javascript
复制
<jaxb:bindings jaxb:extensionBindingPrefixes="xjc" version="2.1"
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">

    <jaxb:globalBindings>
        <xjc:simple/>
    </jaxb:globalBindings>

    <jaxb:bindings schemaLocation="../xsd/one.xsd">
        <jaxb:schemaBindings>
            <jaxb:package name="my.package.one" />
        </jaxb:schemaBindings>
    </jaxb:bindings>

    <jaxb:bindings schemaLocation="http://www.example.com/xmlns/example1.xsd">
        <jaxb:schemaBindings>
            <jaxb:package name="my.package.one.example1" />
        </jaxb:schemaBindings>
    </jaxb:bindings> 
</jaxb:bindings>

twobinding.xjb

代码语言:javascript
复制
<jaxb:bindings jaxb:extensionBindingPrefixes="xjc" version="2.1"
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">

    <jaxb:globalBindings>
        <xjc:simple/>
    </jaxb:globalBindings>

    <jaxb:bindings schemaLocation="../xsd/two.xsd">
        <jaxb:schemaBindings>
            <jaxb:package name="my.package.two" />
        </jaxb:schemaBindings>
    </jaxb:bindings>

    <jaxb:bindings schemaLocation="http://www.example.com/xmlns/example1.xsd">
        <jaxb:schemaBindings>
            <jaxb:package name="my.package.two.example1" />
        </jaxb:schemaBindings>
    </jaxb:bindings>    

</jaxb:bindings>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28985178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档