2012-03-21 10 views
11

Estoy usando un script maven para generar el código Java que necesito para comunicarme con un servicio WCF. He logrado que funcione la comunicación y estoy listo para integrar mi script Maven y el código que genera con el resto del código Java del proyecto.Especificación del nombre del paquete cuando se utiliza Maven para generar Java desde WSDL

Sin embargo, no puedo hacer que maven genere el código con el nombre correcto del paquete que quiero. De lo que he leído en línea debería usar la etiqueta, y he visto dos posibles lugares donde esto sucede. He incluido el segmento del guión, creo que estos deben entrar, y los dos allí. Sin embargo, estas etiquetas afectan nada y genera el código tal como lo hizo sin ellos

 <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>${cxf.version}</version> 
      <configuration> 
         <packageName>com.name.server.cxf</packageName>      
        <sourceRoot>src/com/server/cxf</sourceRoot> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl> 
           <bindingFiles> 
            <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile> 
           </bindingFiles> 
           <extraargs> 
            <extraarg>-validate</extraarg> 
            <extraarg>-client</extraarg> 
            <extraarg>-verbose</extraarg> 
            <extraarg>-xjc-verbose</extraarg> 
           </extraargs> 
          </wsdlOption> 
         </wsdlOptions> 
         <verbose /> 
        </configuration> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
        <configuration> 
         <packageName>com.name.server.cxf</packageName>  
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Tal vez estoy usando la etiqueta equivocada, o tal vez sea en el lugar equivocado?

+1

Nunca generar fuente en src/... mejor uso target/... – khmarbaise

Respuesta

18

Agregue <extraarg>-p</extraarg><extraarg>com.name.server.cxf</extraarg> a su sección <extraargs> dentro de la etiqueta <wsdlOption>. La siguiente (versión ligeramente diferente) funciona para mí.

 <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>${cxf.version}</version> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl> 
           <bindingFiles> 
            <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile> 
           </bindingFiles> 
           <extraargs> 
            <extraarg>-validate</extraarg> 
            <extraarg>-client</extraarg> 
            <extraarg>-verbose</extraarg> 
            <extraarg>-xjc-verbose</extraarg> 
            <extraarg>-p</extraarg> 
            <extraarg>com.name.server.cxf</extraarg> 
           </extraargs> 
          </wsdlOption> 
         </wsdlOptions> 
        </configuration> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

otra parte, crear un archivo service-options en src/com/server/cxf/code-generation/ con el contenido -p com.name.server.cxf

+0

Desafortunadamente, ninguno de esos parecía tener ningún efecto en absoluto ... Sólo para estar seguro, el archivo de opciones de servicio no necesita extensión? – crdzoba

+0

Sí, sin extensión. Creo que el formato es -opciones donde tiene serviceName.wsdl – aliasmrchips

+0

La primera vez que lo intenté, tuve -p y com.name.server.cxf encerrados en etiquetas en la misma línea ... Puede haber sido ese el problema . Recibí un error cuando lo hice de nuevo, pero luego agregué -autoNameResolution debajo de las dos etiquetas que sugirió y las cosas parecen funcionar ahora. ¡Muchas gracias! – crdzoba

1

Esto funciona muy bien para mí:

<wsdlOption> 
           <wsdl>src/main/resources/wsdl/my_wsdl.wsdl</wsdl> 
           <extraargs> 
            <extraarg>-p</extraarg> 
            <extraarg>http://services.demo.es/=com.my.package.demo1</extraarg> 
            <extraarg>-p</extraarg> 
            <extraarg>http://tempuri.org/=com.my.package.demo2</extraarg> 
            <extraarg>-exsh</extraarg> 
            <extraarg>true</extraarg> 
            <extraarg>-client</extraarg> 
            <extraarg>-wsdlLocation</extraarg> 
            <extraarg></extraarg> 
           </extraargs> 
          </wsdlOption> 
0

La solución anterior con

<extraarg>-p</extraarg> 
<extraarg>com.name.server.cxf</extraarg> 

Está cambiando el nombre del paquete de la fuente generada en un solo paquete, debido a que las clases de ObjectFactory están sobrescrito. Necesito una estructura de paquete similar a la basada en wsld. Junto con el paquete de adición.

clases de ejemplo de Java se generan como com.service.name.mypackage.a, com.service.name.mypackage.b, com.service.name.mypackage.c

Cuestiones relacionadas