2012-01-18 12 views
6

Sto generando classi Java da un WSDL utilizzando l'obiettivo wsimport di jaxws-maven-plugin. Fuori dagli schemi, questo genera classi e metodi orribili dallo schema XML; ad es. una classe denominata MYOBJECT da un elemento XML denominato MY_OBJECT.Come posso ottenere JAXB2 per emettere i collegamenti CamelCase?

Ho trovato che posso customize my JAXB2 bindings con un file esterno; questo sarebbe accettabile per un piccolo numero di classi e metodi, ma il sovraccarico di nominare manualmente tutto in questo caso è indesiderabile.

Alcune ricerche trovano i riferimenti a un plug-in XJC CamelCase Always, ma questo sembra essere non mantenuto e la maggior parte dei link sono 404. Non volendo rinunciare, ho trovato un artefatto Maven camelcase-always che sembra fornire questa funzionalità, ma non sono sicuro di come configurarlo in modo che jaxws-maven-plugin lo usi.

Come posso ottenere i binding CamelCase senza specificarli tutti manualmente?

risposta

5

Non ho trovato esempi su come eseguire questa operazione con jaxws-maven-plugin, ma ho trovato esempi utilizzando maven-jaxb2-plugin.

In primo luogo, è necessario un repository aggiunto al tuo POM:

<repository> 
    <id>releases</id> 
    <name>Releases</name> 
    <url>https://oss.sonatype.org/content/repositories/releases</url> 
</repository> 

nota la dichiarazione di plug-in e gli argomenti aggiunti alla esecuzione maven-jaxb2-plugin.

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <version>0.8.0</version> 
    <executions> 
     <execution> 
      <id>jaxb-generate</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <generatePackage>YOUR.PACKAGE.HERE</generatePackage> 
     <args> 
      <arg>-camelcase-always</arg> 
     </args> 
     <bindingDirectory>src/main/binding</bindingDirectory> 
     <schemas> 
      <schema> 
       <url>http://YOUR.WSDL.HERE</url> 
      </schema> 
     </schemas> 
     <extension>true</extension> 
     <plugins> 
      <plugin> 
       <groupId>org.andromda.thirdparty.jaxb2_commons</groupId> 
       <artifactId>camelcase-always</artifactId> 
       <version>1.0</version> 
      </plugin> 
     </plugins> 
    </configuration> 
</plugin> 

Vedere docs per ulteriori dettagli.

0

Potrebbe essere utile per gli utenti di Apache CXF e del plugin cxf-xjc.

<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-xjc-plugin</artifactId> 
    <version>3.1.0</version> 
    <configuration> 
     <extensions> 
     <extension>org.andromda.thirdparty.jaxb2_commons:camelcase-always:1.0</extension> 
     </extensions> 
    </configuration> 
    <executions> 
     <execution> 
     <id>generate-sources</id> 
     <phase>generate-sources</phase> 
     <goals> 
      <goal>xsdtojava</goal> 
     </goals> 
     <configuration> 
      <sourceRoot>${basedir}/target/generated-sources/cxf</sourceRoot> 
      <xsdOptions> 
      <xsdOption> 
       <xsd>YOUR.XSD.HERE</xsd> 
       <packagename>YOUR.PACKAGE.HERE</packagename> 
       <extensionArgs> 
       <extensionArg>-camelcase-always</extensionArg> 
       </extensionArgs> 
       <extension>true</extension> 
      </xsdOption> 
      </xsdOptions> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
Problemi correlati