簡體   English   中英

Maven JAXB-如何指定用於從XSD生成的根節點

[英]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功能。 較高級別的步驟是:

  • 建立一個新的XSR文件;
  • 請參考XML模式集合中的源XSD
  • 創建一個“版本”:圖形編輯器可以幫助您。 基本上,您可以將所需的頂級XSD對象與新的XSD文件位置進行匹配。
  • 生成新的XSD。
  • 將新的XSD與工件一起使用。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM