2013-08-30 42 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> 
相关问题