Создание классов с использованием нескольких схем xsd с повторяющейся записью класса

У меня есть несколько файлов схемы 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, я могу видеть только классы, созданные для последней схемы «схема2», а не для «схемы1».

Во время работы в журналах командной строки я вижу, что классы генерируются для обеих схем. Но в результате старый пакет удаляется и создается заново. В основном у меня есть классы только для последней схемы, а не для других схем.

Как я могу это решить?


person Shashi Ranjan    schedule 04.04.2016    source источник


Ответы (1)


Используйте <clearOutputDir>false</clearOutputDir> в обоих тегах <configuration>.

eg:

<configuration>
    <clearOutputDir>false</clearOutputDir>
    <schemaDirectory>src/main/resources/xsd/schema2</schemaDirectory>
    <schemaIncludes>
        <include>schema2.xsd</include>
    </schemaIncludes>
    <packageName>com.schema2.rest.stub</packageName>
</configuration>
person Shashi Ranjan    schedule 06.04.2016