Смешивание эпизодов JAXB и xjc:javaType в библиотеке jar
Если есть библиотека Java, от которой зависят другие проекты (.jar зависимость через Maven). В этой библиотеке есть XSD-файл, который определяет некоторые xs:simpleType
s, которые также отмечены 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>
У меня есть любые простые и сложные типы, и это работает как шарм. Надеюсь, поможет!