maven-jaxb2-плагин два xsd с одинаковыми элементами - PullRequest
0 голосов
/ 05 июня 2018

у меня есть два xsd (образцы упрощены):

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://someurl.com" xmlns="http://someurl.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" elementFormDefault="qualified">
    <xs:element name="Request">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Users" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="User" type="UserType" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="UserType" type="xs:string" minOccurs="0" maxOccurs="1">
        </xs:element>
</xs:schema>

и

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://otherurl.com" xmlns="http://otherurl.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" elementFormDefault="qualified">
    <xs:element name="Request">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Users" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="User" type="UserType" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="UserType" type="xs:string" minOccurs="0" maxOccurs="1">
        </xs:element>
</xs:schema>

Мне нужно сгенерировать элемент Request в разные пакеты или один и тот же пакет с разными именами классов(если это возможно).И все дочерние элементы в один и тот же пакет, поэтому, например, он не будет генерировать два класса с именем UserType.

Вот так я генерирую его сейчас в pom.xml (но в этом случае его проблема, потому что генерируются дваразличные классы UserType):

<execution>
                    <id>xsd1</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>

    <schemaDirectory>src/main/resources/xsd</schemaDirectory>
                        <schemaIncludes>
                            <include>xsd1.xsd</include>
                        </schemaIncludes>

   <bindingDirectory>src/main/resources/xsd</bindingDirectory>
                        <bindingIncludes>
                            <include>edu.xjb</include>
                        </bindingIncludes>
                        <generateDirectory>${project.basedir}/target/generated-sources/jaxb/schemas/xsd1</generateDirectory>
                        <generatePackage>mainpackage.package1</generatePackage>
                        <plugins>
                            <plugin>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-basics</artifactId>
                                <version>0.9.4</version>
                            </plugin>
                        </plugins>
                        <args>
                            <arg>-Xequals</arg>
                            <arg>-XhashCode</arg>
                            <arg>-XtoString</arg>
                        </args>
                    </configuration>
                </execution>

и

<execution>
                        <id>xsd2</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <schemaDirectory>src/main/resources/xsd</schemaDirectory>
                            <schemaIncludes>
                                <include>xsd2.xsd</include>
                            </schemaIncludes>
                            <bindingDirectory>src/main/resources/xsd</bindingDirectory>
                            <bindingIncludes>
                                <include>edu.xjb</include>
                            </bindingIncludes>
                            <generateDirectory>${project.basedir}/target/generated-sources/jaxb/schemas/xsd2</generateDirectory>
                            <generatePackage>mainpackage.package2</generatePackage>
                            <plugins>
                                <plugin>
                                    <groupId>org.jvnet.jaxb2_commons</groupId>
                                    <artifactId>jaxb2-basics</artifactId>
                                    <version>0.9.4</version>
                                </plugin>
                            </plugins>
                            <args>
                                <arg>-Xequals</arg>
                                <arg>-XhashCode</arg>
                                <arg>-XtoString</arg>
                            </args>
                        </configuration>
                    </execution>
...