ฉันเพิ่งลองใช้ปลั๊กอินสามตัวที่กล่าวถึงข้างต้น (รวมอยู่ที่นี่ด้วย):
- ปลั๊กอิน maven-jaxb2 ( http://maven-jaxb2-plugin.java.net/ )
- maven-jaxb-plugin ( https://jaxb.dev.java.net/jaxb-maven2-plugin/)
- jaxb2-maven-plugin ( http://mojo.codehaus.org/jaxb2-maven-plugin/ )
ฉันลงเอยด้วยการใช้ตัวเลือกที่สี่: ปลั๊กอิน CXF XJC Maven http://cxf.apache.org/cxf-xjc-plugin.html
หากฉันขาดบางสิ่งที่ฉันอยากรู้ แต่การกำหนดค่าดูเหมือนจะตรงไปตรงมามากขึ้นสำหรับสิ่งที่ฉันพยายามทำและทำให้ฉันจัดการกับการสร้างคลาสที่ซ้ำกันภายในเนมสเปซเดียวกันได้ง่ายขึ้น - คล้ายกับคำถามนี้หรือไม่: มี วิธีจัดการกับข้อกำหนดองค์ประกอบที่ซ้ำกันในไฟล์. xsd หลายไฟล์ใน JAXB? .
ตอนนี้ฉันมีการควบคุมอย่างละเอียดสำหรับแต่ละ XSD ขาเข้าและแพ็คเกจจาวาที่เกี่ยวข้อง นี่คือตัวอย่างการกำหนดค่าที่ใกล้เคียงกับที่ฉันใช้
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>2.3.0</version>
<configuration>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<sourceRoot>${basedir}/target/generated-sources/src/main/java</sourceRoot>
<xsdOptions>
<xsdOption>
<xsd>src/main/resources/schema/commands.xsd</xsd> <!--shares a common.xsd file causing the conflicts-->
<packagename>com.foo.bar.commands</packagename>
</xsdOption>
<xsdOption>
<xsd>src/main/resources/schema/responses.xsd</xsd>
<packagename>com.foo.bar.responses</packagename>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>