使用具有重复类条目的多个xsd模式生成类

时间:2016-04-04 09:22:48

标签: java maven xsd xjc jaxb2-maven-plugin

我有多个xsd架构文件,其中包含多个/常见的重复xs:element / class条目。我尝试使用pom.xml中的以下行转换为类

<build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <id>schema1</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                        <configuration>
                            <schemaDirectory>src/main/resources/xsd/schema1</schemaDirectory>
                            <schemaIncludes>
                                <include>schema1.xsd</include>
                            </schemaIncludes>
                            <packageName>com.schema1.rest.stub</packageName>
                        </configuration>
                    </execution>
                    <execution>
                        <id>schema2</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                        <configuration>
                            <schemaDirectory>src/main/resources/xsd/schema2</schemaDirectory>
                            <schemaIncludes>
                                <include>schema2.xsd</include>
                            </schemaIncludes>
                            <packageName>com.schema2.rest.stub</packageName>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

在只运行一个execution标记时,我成功获得了类。但是当我包含两个或两个以上的模式或execution标记时,我只能看到为最后一个模式“schema2”而不是“schema1”创建的类。

在命令行日志中运行时,我可以看到为这两个模式生成了类。但结果是删除旧包并重新创建它。基本上我只有最后一个模式的类,而不是其他模式。

我如何解决它?

1 个答案:

答案 0 :(得分:0)

<clearOutputDir>false</clearOutputDir>标记中使用<configuration>

例如:

<configuration>
    <clearOutputDir>false</clearOutputDir>
    <schemaDirectory>src/main/resources/xsd/schema2</schemaDirectory>
    <schemaIncludes>
        <include>schema2.xsd</include>
    </schemaIncludes>
    <packageName>com.schema2.rest.stub</packageName>
</configuration>