Я использую плагин mojohaus jaxb2-maven для создания источников Java из файлов схемы xsd. Мой pom.xml выглядит так:
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<id>xjc-1</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>my.first.package.types</packageName>
<sources>
<source>src/main/java/META-INF/wsdl/firstSchema.xsd</source>
</sources>
</configuration>
</execution>
<execution>
<id>xjc-2</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>my.second.package.types</packageName>
<sources>
<source>src/main/java/META-INF/wsdl/secondSchema.xsd</source>
</sources>
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>
</executions>
<configuration>
<outputDirectory>src/main/javagen</outputDirectory>
</configuration>
</plugin>
Эта конфигурация плагина должна соответствовать конфигурации, найденной здесь а>. Когда я запускаю сборку, сгенерированные исходные файлы из первой схемы также помещаются во второй пакет. Может ли кто-нибудь объяснить мне, почему это так? Это баг или я что-то пропустил?
Большое спасибо за любой вклад!
Редактировать:
Я также попробовал плагин maven-jaxb2. Тот же результат! Так что это, кажется, общая проблема maven. Моя конфигурация плагина для maven-jaxb2-plugin выглядит следующим образом:
...
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.14.0</version>
<executions>
<execution>
<id>first</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaIncludes>
<include>firstSchema.xsd</include>
</schemaIncludes>
<generatePackage>my.first.package.types</generatePackage>
</configuration>
</execution>
<execution>
<id>second</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaIncludes>
<include>secondSchema.xsd</include>
</schemaIncludes>
<generatePackage>my.second.package.types</generatePackage>
</configuration>
</execution>
</executions>
<configuration>
<schemaDirectory>src/main/java/META-INF/wsdl</schemaDirectory>
<generateDirectory>src/main/javagen</generateDirectory>
</configuration>
</plugin>
У кого-нибудь есть какие-либо идеи? Меня это начинает несколько раздражать...
Изменить:
Я узнал, что это связано с тем, что некоторые файлы xsd импортировали такие файлы:
<xs:import namespace="http://referenced/namespace"
schemaLocation="referencedSchema.xsd" />
Мне кажется, что Maven игнорирует тег пространства имен. Как я могу сказать Maven прекратить это делать?