2011-03-30 6 views
7

Genero el servidor/cliente de mi wsdl/xsd usando cxf-codegen-plugin para Maven. Todos los tipos creados tienen constructores no-arg predeterminados, lo que hace que sea un dolor trabajar con ellos.¿Puede ApacheCXF generar constructores completos cuando se usa cxf-codegen-plugin para Maven?

¿Hay alguna manera de hacer que Apache CXF genere también un constructor completo, con todos los miembros de la clase como argumentos?

+0

Estoy enfrentando el mismo problema. Si ha encontrado una solución, por favor comente. – heldt

Respuesta

6

Este plugin es simplemente una envoltura elegante alrededor de xjc.

Hay dos plugins xjc que abordan el problema de espacio:

  • Value-constructor exactamente lo que busca.
  • Fluent-api no es exactamente lo que está buscando, pero muchos prefieren una API apta para valorar a los constructores.

Debe agregar las dependencias requeridas y luego configurar el complemento para habilitar esos complementos en xjc, p.

<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-codegen-plugin</artifactId> 
    <configuration> 
    <defaultOptions> 
     <extraargs> 
     <extraarg>-xjc-Xvalue-constructor</extraarg> 
     </extraargs> 
    </defaultOptions> 
    </configuration> 
    <dependencies> 
    <dependency> 
     <groupId>org.jvnet.jaxb2_commons</groupId> 
     <artifactId>jaxb2-value-constructor</artifactId> 
     <version>3.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jvnet.jaxb2_commons</groupId> 
     <artifactId>jaxb2-basics</artifactId> 
     <version>0.6.4</version> 
    </dependency> 
    </dependencies> 
</plugin> 

Nota: lo anterior hace de este un valor predeterminado para todas las ejecuciones, si desea habilitar estas opciones por sólo una ejecución específica, a continuación, sólo tiene que añadir el bit <configuration> en que la ejecución específica.

+0

¡Gracias! Anteriormente estaba tratando de extender 'cxf-xjc-plugin' con' org.jvnet.jaxb2.maven2: maven-jaxb2-plugin: 0.8.2' y fallar, pero con su ejemplo, quedó claro que debería estar usando 'org .jvnet.jaxb2_commons: jaxb2-basics: 0.6.4' – pulkitsinghal

+0

Gracias. Para los dos enlaces provistos, solo recibo un aviso de movimiento. ¿Intenté amonestarlos, pero solo llegué a los repositorios de Github solo con código? – eugenevd

Cuestiones relacionadas