2012-09-26 51 views
13

想象一下這種情況。自定義軟件包名稱cxf-codegen-plugin

我有一個名稱空間爲a/b/c的wsdl文件,它導入了名稱空間爲m/n/o的另一個wsdl。 不幸的是,它們都具有相同的ComplexTypes XYZ。現在,當我使用cxf-codegen-plugin生成Java代碼並使用自定義包名稱「com.qsrs.uvw」時,只有一個類保留在生成的最終代碼中。有人能幫助我嗎?

+0

不要定義包名讓cxf-codegen-plugin完成工作。 – khmarbaise

回答

43

如果你想生成包取決於命名空間在這裏是解決方案:

<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-codegen-plugin</artifactId> 
    <version>2.6.0</version> 
    <executions> 
     <execution> 
      <id>generate-sources</id> 
      <phase>generate-sources</phase> 
      <configuration> 
       <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot> 
       <wsdlOptions> 
        <wsdlOption> 
         <wsdl>yourWsdl.wsld</wsdl> 
         <extraargs> 
          <extraarg>-client</extraarg> 
          <extraarg>-verbose</extraarg> 
          <extraarg>-p</extraarg> 
          <extraarg>http://your.namespace/services/=your.package</extraarg> 
          <extraarg>-p</extraarg> 
          <extraarg>http://your.namespace2/services2/=your.package2</extraarg> 
         </extraargs> 
        </wsdlOption> 
       </wsdlOptions> 
      </configuration> 
      <goals> 
       <goal>wsdl2java</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

<extraarg>http://your.namespace2/services2/=your.package2</extraarg>將映射你想要的包命名空間。

+2

感謝您的回覆。你能否讓我知道是否可以爲所有生成的包指定一個前綴? – Gopal

+0

你是什麼意思包的前綴? –

+0

@ Paulius..Imagine我允許JibX尊重架構,我希望生成的所有包都位於根包jibx.x.y.z下。實際的問題是我有一個cxf-code-gen插件使用相同的模式生成代碼。因此,我有兩個具有相同包結構和名稱的類。因此,我想將所有由jibx生成的類放在不同的根目錄下。 – Gopal