2012-01-18 2 views
6

jaxws-maven-plugin의 wsimport 목표를 사용하여 WSDL에서 Java 클래스를 생성하고 있습니다. 즉석에서 XML 스키마에서 끔찍한 클래스와 메소드를 생성합니다. 예를 들어, MY_OBJECT라는 이름의 XML 요소로부터 MYOBJECT라는 클래스가 생성된다.CamelCase 바인딩을 방출하기 위해 JAXB2를 얻으려면 어떻게해야합니까?

외부 파일이있는 customize my JAXB2 bindings을 발견했습니다. 이것은 소수의 클래스와 메소드에 대해서는 허용 될 수 있지만,이 경우 수동으로 모든 것을 명명하는 오버 헤드는 바람직하지 않습니다.

일부 검색은 XJC CamelCase Always 플러그인에 대한 참조를 나타내지 만 유지가되지 않는 것으로 나타나고 대부분의 링크는 404입니다. 포기하지 않으려 고이 기능을 제공하는 것으로 보이는 camelcase-always 메이븐 인공물을 찾았지만 jaxws-maven-plugin이이를 사용하도록 구성하는 방법을 모르겠습니다.

CamelCase 바인딩을 모두 수동으로 지정하지 않고 가져올 수있는 방법은 무엇입니까?

답변

5

jaxws-maven-plugin으로 이것을 수행하는 방법의 예제를 찾지 못했지만 maven-jaxb2-plugin을 사용하는 예제를 찾았습니다. 플러그인 선언과 인수가 maven-jaxb2-plugin 실행에 추가

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

참고 :

먼저, 당신은 당신의 POM에 추가 저장소가 필요합니다.

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

자세한 내용은 docs을 참조하십시오.

0

Apache CXF 및 cxf-xjc-plugin 사용자에게 유용 할 수 있습니다.

<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> 
관련 문제