2012-09-26 10 views
13

このシナリオを想像してみてください。カスタムパッケージ名cxf-codegen-plugin

私は名前空間a/b/cを持つwsdlファイルを持っており、名前空間がm/n/oである別のwsdlをインポートします。 残念ながら、それらの両方に同じComplexTypes XYZが定義されています。ここで、cxf-codegen-pluginを使用してJavaコードを生成し、カスタムパッケージ名 "com.qsrs.uvw"を使用すると、生成される最終コードに1つのクラスだけが保持されます。誰かがここで私を助けることができますか?

+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プラグインがあることです。したがって、私は同じパッケージ構造と名前の2つのクラスを持っています。したがって、私は、jibxによって生成されたすべてのクラスを別のルートに配置したいと考えています。 – Gopal

関連する問題