создание классов в разных пакетах с использованием jaxb и maven

этот вопрос очень похож на этот но мой случай немного другой

У меня есть единственный каталог, который содержит множество xsd и wsdl. некоторые из них необходимо сгенерировать в разных пакетах.

Я настроил свой pom.xml следующим образом:

    <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.7.1</version>
            <executions>
                <execution>
                    <id>xsd-generate</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <generateDirectory>${project.build.directory}/generated-sources/xsdClasses</generateDirectory>
                        <generatePackage>eu.ist_phosphorus.harmony.common.serviceinterface.databinding.jaxb</generatePackage>
                        <schemaDirectory>resources/webservices</schemaDirectory>
                        <includeSchemas>
                            <!-- we have 3 top level xsd's -->
                            <include>Topology-Types.xsd</include>
                            <include>Reservation-Types.xsd</include>
                            <include>Notification-Types.xsd</include>

                        </includeSchemas>
                        <extension>true</extension>
                        <args>
                            <arg>-Xcopyable</arg> <!-- to make them implement java.lang.Cloneable -->
                        </args>
                        <plugins>
                            <!-- necesary for -Xcopyable to work -->
                            <plugin>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-basics</artifactId>
                                <version>0.5.3</version>
                            </plugin>
                        </plugins>
                    </configuration>
                </execution>

                <execution>
                    <id>wsdl-reservation-generate</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <generateDirectory>${project.build.directory}/generated-sources/reservationClasses</generateDirectory>
                        <generatePackage>eu.ist_phosphorus.harmony.common.serviceinterface.reservation</generatePackage>
                        <schemaDirectory>resources/webservices/</schemaDirectory>
                        <includeSchemas>
                            <include>Reservation-WS.wsdl</include>
                        </includeSchemas>
                        <extension>true</extension>
                    </configuration>
                </execution>

                <execution>
                    <id>wsdl-notification-generate</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <generateDirectory>${project.build.directory}/generated-sources/notificationClasses</generateDirectory>
                        <generatePackage>eu.ist_phosphorus.harmony.common.serviceinterface.notification</generatePackage>
                        <schemaDirectory>resources/webservices</schemaDirectory>
                        <includeSchemas>
                            <include>Notification-WS.wsdl</include>
                        </includeSchemas>
                        <extension>true</extension>
                    </configuration>
                </execution>

                <execution>
                    <id>wsdl-topology-generate</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <generateDirectory>${project.build.directory}/generated-sources/topologyClasses</generateDirectory>
                        <generatePackage>eu.ist_phosphorus.harmony.common.serviceinterface.topology</generatePackage>
                        <schemaDirectory>resources/webservices</schemaDirectory>
                        <includeSchemas>
                            <include>Topology-WS.wsdl</include>
                        </includeSchemas>
                        <extension>true</extension>
                    </configuration>
                </execution>

            </executions>

        </plugin>

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

как я могу настроить плагин так, чтобы каждый пакет содержал только классы, перечисленные в includeSchemas?

почему мой случай отличается от другого вопроса? Я не могу поместить файлы xsd / wsdl в разные каталоги, так как они зависят от дополнительных файлов, которые, как мне кажется, не рекомендуется дублировать.


person santiagozky    schedule 01.03.2012    source источник


Ответы (1)


Я считаю, что ваша проблема в том, что <includeSchemas> должно быть <schemaIncludes> (по крайней мере, с версией 0.8.0)

person adrianboimvaser    schedule 01.03.2012
comment
благодаря. Запуталась с документацией. Я не знал, что есть много плагинов jaxb с очень похожими именами - person santiagozky; 08.03.2012