[英]Generating Java classes from XSD maven dependency in maven with JAXB (or others)
[英]Maven JAXB - How to specify root node for generating from XSD
我有個問題。 我有一個很大的公司XSD文件,其中包含許多系統中許多對象的定義。 我不想在這個XSD的單獨項目中生成一些Java類,但是我不想生成XSD中定義的所有類,因為我並不需要它們。
是否可以指定類似XSD根節點的名稱,以便在Maven中使用JAXB生成Java類?
我希望我的問題很清楚:)
您的問題是我經常看到的問題,對於大型XSD,我會說典型的問題。
不幸的是,我不知道控制生成過程的JAXB方式,而不是您想要的方式。
為此,我開發了一個替代解決方案,因此,從現在開始,我的偏見依賴於自動XML模式重構(XSR)。 它基本上吸收了您的XSD,並從一組XSD對象(在您的情況下可能是幾個全局元素,也許還有一些類型)中,將生成XSD的子集,該子集僅包含必要的項目,沒有絨毛。 將那些XSD放入JAXB中,它將完全為您提供所需的內容。 這涉及QTAssistant及其XSR功能。 較高級別的步驟是:
QTAssistant通過Exec Maven插件支持與Maven的命令行集成,但僅在Windows上。
有一個用於生成可以帶有XJC參數的Java類的插件,這可能是更高級配置中的一個鈎子。 但是我不熟悉這些。
取自插件的來源:
/**
* Space separated string of extra arguments,
* for instance <code>-Xfluent-api -episode somefile</code>;
* These will be passed on to XJC as
* <code>"-Xfluent-api" "-episode" "somefile"</code> options.
*
* @parameter expression="${xjc.arguments}"
*/
protected String arguments;
pom.xml插件配置示例:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>xjc</id>
<phase>process-resources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<packageName>package.name</packageName>
<schemaDirectory>${basedir}/src/main/webapp/WEB-INF/xsd</schemaDirectory>
<bindingDirectory>${basedir}/src/main/java</bindingDirectory>
</configuration>
</plugin>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.