2012-01-18 13 views
6

Tôi đang tạo các lớp Java từ WSDL bằng cách sử dụng mục tiêu wsimport của jaxws-maven-plugin. Ngoài hộp, điều này tạo ra các lớp và các phương thức ghê tởm từ lược đồ XML; ví dụ: một lớp có tên MYOBJECT từ một phần tử XML có tên là MY_OBJECT.Làm cách nào để JAXB2 phát ra các ràng buộc CamelCase?

Tôi đã tìm thấy rằng tôi có thể customize my JAXB2 bindings bằng một tệp bên ngoài; điều này có thể chấp nhận được đối với một số lượng nhỏ các lớp và các phương thức, nhưng chi phí của việc đặt tên thủ công mọi thứ trong trường hợp này là không mong muốn.

Một số khám phá tìm kiếm tham chiếu tới plugin XJC CamelCase Always, nhưng điều này dường như không được duy trì và hầu hết các liên kết đều là 404. Không sẵn sàng từ bỏ, tôi đã tìm thấy một vật phẩm Maven camelcase-always xuất hiện để cung cấp chức năng này, nhưng tôi không chắc chắn cách cấu hình để jaxws-maven-plugin sử dụng nó.

Tôi làm cách nào để có được các ràng buộc CamelCase mà không chỉ định tất cả bằng tay?

Trả lời

5

Tôi không tìm thấy ví dụ về cách thực hiện việc này với jaxws-maven-plugin, nhưng tôi đã tìm thấy các ví dụ bằng cách sử dụng maven-jaxb2-plugin.

Trước tiên, bạn cần có một kho lưu trữ bổ sung vào POM của bạn:

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

Lưu ý việc kê khai và lập luận thêm plugin để thực hiện 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> 

Xem docs để biết thêm chi tiết.

0

Có thể hữu ích cho người dùng Apache CXF và 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>