2013-08-30 40 views
2

我需要一個ObjectFactory與多個模式的多個Java對象。我已經運行了幾個不同的插件和這些插件的變體。目前我使用如下:如何將多個.xsd生成到同一個ObjectFactory中?

<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-xjc-plugin</artifactId> 
    <version>2.6.2</version> 
    <configuration> 
     <extensions> 
      <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.6.2</extension> 
     </extensions> 
    </configuration> 
    <executions> 
     <execution> 
      <id>generate-sources</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>xsdtojava</goal> 
      </goals> 
      <configuration> 
       <sourceRoot>${basedir}/target/generated-sources/xjc</sourceRoot> 
       <xsdOptions> 
        <xsdOption> 
<xsd>${basedir}/src/main/resources/osds/schemas/IataAsmAdmEvent.xsd</xsd> 
<xsd>${basedir}/src/main/resources/osds/schemas/IataAsmCnlEvent.xsd</xsd> 
<xsd>${basedir}/src/main/resources/osds/schemas/IataAsmEqtEvent.xsd</xsd> 
<packagename>com.mypackage</packagename> 
        </xsdOption> 
       </xsdOptions> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

有了這個插件,和許多人一樣,我只能用只在列表中最後一個模式來生成一個ObjectFactory。以前的xsds中沒有一個是作爲java對象在OF中創建的。 任何人都可以請幫我解決這個問題嗎?

謝謝!

+0

這似乎是工作::: \t org.jvnet.jaxb2.maven2 \t Maven的JAXB2-插件 \t \t 0.7.5 \t \t \t \t \t \t \t 生成-S1-和-S3 \t \t \t \t \t 生成 \t \t \t \t \t \t <結構> \t \t 的src /主/資源/模式 \t \t \t \t \t \t \t S2.xsd \t \t \t S3.xsd \t \t \t \t \t \t \t user2733840

+0

但eclipse被困在循環中 - 爲xsd生成源創建更改,以及構建wsdl生成源的更改。它似乎來回乒乓球,永遠不會自行解決。有任何想法嗎? – user2733840

+1

你有沒有想過這個?不幸的是我有同樣的問題。 –

回答

2

我有同樣的問題,也解決了包裝XSD:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:include schemaLocation="schema1.xsd" /> 
    <xs:include schemaLocation="schema2.xsd" /> 
    <xs:include schemaLocation="schema3.xsd" /> 
</xs:schema> 

當然,這並不讓這些包含的XSD包括彼此或普通的XSD等。如果「schema3.xsd」包含「schema2.xsd」,則從該列表中刪除「schema2.xsd」。

+0

我試過這個方法。每個包含文件都有一個錯誤: '[錯誤] src-include.2.1:被引用模式的目標名稱空間,當前爲'http://www.bcb.gov.br/GEN/GEN0020E.xsd',必須是與包含模式相同,目前'null' –

+0

@PedroLamarão似乎你混淆了不同的命名空間,其中一些是空的。可能會有選項忽略名稱空間(我不知道),或者您必須將每個包含模式的名稱空間設置爲'http://www.bcb.gov.br/GEN/GEN0020E.xsd'。 – comonad

0

可以使用org.codehaus.mojo插件完成。在 'schemaFiles' 標籤下提供多種模式文件:

   <execution> 
        <id>xjc-generate-sources</id> 
        <goals> 
         <goal>xjc</goal> 
        </goals> 
        <configuration> 
         <extension>true</extension> 
         <schemaDirectory>src/main/resources/xsd</schemaDirectory> 
         <schemaFiles>xsd1.xsd,xsd2.xsd</schemaFiles> 
         <packageName>pachage.name.to.generate.classes</packageName> 
         <outputDirectory>target/generated-sources</outputDirectory> 
         <clearOutputDir>false</clearOutputDir> 
        </configuration> 
       </execution> 
相關問題