Смешивание эпизодов JAXB и xjc:javaType в библиотеке jar

Если есть библиотека Java, от которой зависят другие проекты (.jar зависимость через Maven). В этой библиотеке есть XSD-файл, который определяет некоторые xs:simpleTypes, которые также отмечены xjc:javaType элементы, отображающие простые типы в уже существующие классы java и классы адаптера в этой библиотеке. Это все отлично работает, но теперь я хотел создать xs:complexType, Я позволил org.jvnet.jaxb2.maven2:maven-jaxb2-plugin В версии 0.8.2 созданы некоторые Java-бины из сложного типа и дополнительный файл.episode.

Во втором проекте я импортирую библиотеку, распаковываю файл xsd в каталог схемы и позволяю project2.xsd импортировать library.xsd, потому что он использует простые и сложные типы. Чтобы избежать двойной генерации уже существующих bean-компонентов, я добавил библиотеку в качестве зависимости в episodes тег из org.jvnet.jaxb2.maven2:maven-jaxb2-plugin, Но теперь плагин жалуется, что не может проанализировать файл xsd, и выдает исключение в каждой строке определения типа.

Я предполагаю, что есть некоторые проблемы с использованием эпизодов (они не включают в себя simpleTypes?) И xjc:javaType аннотации? Есть ли какое-то решение этой проблемы? Я не могу найти много в Интернете по этому вопросу. Благодарен за любую подсказку.

1 ответ

Решение

Я добился того же, используя maven-hyperjaxb3-plugin. Проверьте, как это делается:

            <plugin>
                <groupId>org.jvnet.hyperjaxb3</groupId>
                <artifactId>maven-hyperjaxb3-plugin</artifactId>
                <version>0.5.4</version>
                <executions>
                <execution>
                    <id>id1</id>
                    <inherited>false</inherited>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <args>
                            <param>-npa</param>
                        </args>
                        <generateDirectory>target/generated-sources/xjc2</generateDirectory>
                        <generatePackage>com.target.package</generatePackage>
                        <extension>true</extension>
                        <schemaIncludes>
                            <include>mine.xsd</include>
                        </schemaIncludes>
                        <forceRegenerate>false</forceRegenerate>
                        <removeOldOutput>true</removeOldOutput>
                        <verbose>true</verbose>
                    </configuration>
                </execution>
</executions>
<dependencies>
                    <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-impl</artifactId>
                        <version>2.1.12</version>
                    </dependency>
                </dependencies>
            </plugin>

Вот зависимости проекта:

<dependencies>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.1.12</version>
        </dependency>

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.1</version>
        </dependency>

        <dependency>
            <groupId>org.jvnet.hyperjaxb3</groupId>
            <artifactId>hyperjaxb3-ejb-runtime</artifactId>
            <version>0.3</version>
        </dependency>

        <!-- Roundtrip -->
        <dependency>
            <groupId>org.jvnet.hyperjaxb3</groupId>
            <artifactId>hyperjaxb3-ejb-roundtrip
            </artifactId>
            <version>0.3</version>
        </dependency>
    </dependencies>

У меня есть любые простые и сложные типы, и это работает как шарм. Надеюсь, поможет!

Другие вопросы по тегам