2009-05-21 31 views
12

Tôi có nhiệm vụ "Maven" này để tạo các lớp Java từ một tệp XSD sử dụng JAXB.Tạo các lớp JAXB tiền tố

 <!-- XML to Java classes --> 
     <plugin> 
      <groupId>com.sun.tools.xjc.maven2</groupId> 
      <artifactId>maven-jaxb-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <generatePackage>nl.compay.service</generatePackage> 
       <schemaDirectory>src/main/webapp/compay</schemaDirectory> 
      </configuration> 
     </plugin> 

Đối với loại XSD "Người dùng", nó tạo ra một lớp có tên "Người dùng" (duh). Tuy nhiên, tôi cũng có một lớp thực thể JPA được gọi là "User" (mặc dù trong một gói khác). Tôi có thể thay đổi cấu hình XML ở trên để cho tiền tố JAXB tạo các lớp được tạo ra với một cái gì đó như "XML" không?

Trả lời

19

Đây là yêu cầu chung. Bạn có thể làm điều đó bằng cách cung cấp tệp đính kèm JAXB bổ sung để tùy chỉnh cách JAXB dịch các tên kiểu lược đồ thành các tên lớp Java.

Những tệp này thường kết thúc bằng đuôi ".xjb". Bạn cần phải tạo một sơ đồ của bạn, ví dụ:

<jxb:bindings version="1.0" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    jxb:extensionBindingPrefixes="xjc"> 

    <jxb:bindings schemaLocation="nl.company.service.xsd" node="/xs:schema"> 
     <jxb:schemaBindings> 
      <jxb:nameXmlTransform> 
       <jxb:typeName prefix="XML"/> 
       <jxb:anonymousTypeName prefix="XML"/> 
      </jxb:nameXmlTransform> 
     </jxb:schemaBindings> 
    </jxb:bindings> 

</jxb:bindings> 

Sau khi bạn đã làm điều đó, thả các tập tin xjb nơi nào đó trong thư mục xây dựng của bạn và nói với Maven để tận dụng nó trong quá trình dịch:

<includeBindings> 
    <includeBinding>mybindings.xjb</includeBinding> 
</includeBindings> 

Và đây là gợi ý cho đường: nếu bạn đang ở trong một đường dẫn có chứa dấu cách (ví dụ: "Tài liệu và cài đặt \ người dùng \ dự án") thì JAXB sẽ gặp lỗi lạ.

+0

Cấu hình plugin maven-jaxb2 yêu cầu các thẻ "bindingIncludes" và "bindingInclude", không phải "includeBindings" và "includeBinding" – kevinmrohr

Các vấn đề liên quan