从外部类生成XSD也无需导入

时间:2016-11-10 14:13:28

标签: java xml maven xsd jaxb

我正在使用com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin从我项目中的各种POJO类生成XSD文件。这样可以正常工作并创建文件A.xsd

其中一个文件引用了一个我无法控制且无法更改的外部包中的枚举。该枚举没有指定名称空间或任何类型的注释。

生成工作正常但它为我的命名空间生成文件A.xsd,为枚举生成文件schema2.xsd,然后在A.xsd中导入。

由于我不会涉及的原因,我只能有1个XSD文件,因此我需要将枚举也生成为A.xsd

这是我用于此的pom.xml代码:

<plugins>
    <plugin>
        <groupId>com.sun.tools.jxc.maven2</groupId>
        <artifactId>maven-jaxb-schemagen-plugin</artifactId>
        <version>${maven-jaxb-schemagen-version}</version>
        <inherited>false</inherited>
        <executions>
            <execution>
                <phase>generate-resources</phase>
                <goals>
                    <goal>generate</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <destdir>${basedir}/src/main/resources/xsds</destdir>
            <srcdir>${basedir}/src/main/java/domain;${basedir}/src/main/java/enums</srcdir>
            <includes>
                <include>*.java</include>
            </includes>
            <verbose>true</verbose>
            <schemas>
                <schema>
                    <namespace>http://www.w3.org/2001/XMLSchema/A</namespace>
                    <file>A.xsd</file>
                </schema>
            </schemas>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.2</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-xjc</artifactId>
                <version>2.2</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>2.2</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-xjc</artifactId>
                <version>2.2</version>
            </dependency>
        </dependencies>
    </plugin>
</plugins>

我尝试用此替换<schema>

<schema>
    <namespace>*</namespace>
    <file>A.xsd</file>
</schema>

和此:

<schema>
    <namespace>http://www.w3.org/2001/XMLSchema</namespace>
    <file>A.xsd</file>
</schema>

和此:

<schema>
    <namespace>http://www.w3.org/2001/XMLSchema/*</namespace>
    <file>A.xsd</file>
</schema>

我尝试将其添加到指定A.xsd

的那个
<schema>
    <namespace>http://www.w3.org/2001/XMLSchema</namespace>
    <file>A.xsd</file>
</schema>

以上都没有。

我如何达到所需的行为?

0 个答案:

没有答案