2012-09-26 24 views
13

Imagine este escenario.Nombres de paquetes personalizados cxf-codegen-plugin

Tengo un archivo wsdl con espacio de nombres a/b/c e importa otro wsdl cuyo espacio de nombres es m/n/o. Desafortunadamente, ambos tienen los mismos ComplexTypes XYZ definidos en ellos. Ahora, cuando uso cxf-codegen-plugin para generar código Java y uso el nombre del paquete personalizado "com.qsrs.uvw", solo se conserva una clase en el código final que se genera. ¿Alguien puede ayudarme aquí?

+0

No defina el nombre del paquete, deje que cxf-codegen-plugin haga el trabajo. – khmarbaise

Respuesta

43

Si desea generar el paquete dependiendo del espacio de nombres Aquí está la solución:

<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> 

Este <extraarg>http://your.namespace2/services2/=your.package2</extraarg> mapeará el espacio de nombres con el paquete que desee.

+2

gracias por la respuesta. ¿Podrías decirme si es posible especificar un prefijo para todos los paquetes que se generan? – Gopal

+0

¿Qué quiere decir prefijo para paquetes? –

+0

@ Paulius..Imagine Permití que JibX respete el esquema, quiero que todo el paquete generado esté bajo un paquete raíz jibx.x.y.z. El problema real es que tengo un código generador de cxf-code-gen que usa el mismo esquema. Así que efectivamente tengo dos clases con la misma estructura y nombre de paquete. Por lo tanto, quiero colocar todas las clases generadas por jibx bajo una raíz diferente. – Gopal

Cuestiones relacionadas