2011-12-13 20 views
7

Khi tôi cố gắng sử dụng maven-jaxb-schemagen-plugin với java 7Có thể nhận plugin maven-jaxb-schemagen làm việc với Java 7 không?

<groupId>com.sun.tools.jxc.maven2</groupId> 
<artifactId>maven-jaxb-schemagen-plugin</artifactId> 
<version>1.2</version> 

tôi nhận được một lỗi:

[ERROR] Failed to execute goal com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin:1.2:generate (default) on project TopologyProvisionerDom: Execution default of goal com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin:1.2:generate failed: A required class was missing while executing com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin:1.2:generate: com/sun/mirror/apt/AnnotationProcessorFactory 

Nó có vẻ như các AnnotationProcessorFactory đang được gỡ bỏ/bị phản đối trong Java 7? Có thể để có được jaxb schemagen để làm việc bằng cách sử dụng plugin này? Có cách tiếp cận thay thế nào để tạo ra lược đồ từ mã nguồn JAXB khi sử dụng JDK 7 không?

Trả lời

9

Bạn đã thử sử dụng org.codehaus.mojo:jaxb2-maven-plugin thay thế?

+2

Vì vậy, plugin này dường như hoạt động. Một nhược điểm là dường như không thể đặt tên các tệp lược đồ đầu ra bằng cách sử dụng plugin này, vì vậy tôi phải sử dụng trình cắm thêm maven-antrun để đổi tên tệp lược đồ. Ngoài ra tôi nhận được một cảnh báo "cảnh báo: Các công cụ apt và API liên quan của nó được lên kế hoạch để được loại bỏ trong bản phát hành JDK chính tiếp theo." - hy vọng mớ hỗn độn này sẽ được sắp xếp ra trước java 8 – lexicalscope

+1

Bạn có thể cung cấp các tệp lược đồ đầu ra bằng cách sử dụng keiki

7

Đây là cách nó hoạt động (bổ sung profile này để bạn pom.xml):

<profile> 
    <id>jdk7-fix</id> 
    <activation> 
     <file><exists>${java.home}/../lib/tools.jar</exists></file> 
    </activation> 
    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>com.sun.tools.jxc.maven2</groupId> 
        <artifactId>maven-jaxb-schemagen-plugin</artifactId> 
        <dependencies> 
         <dependency> 
          <groupId>com.sun</groupId> 
          <artifactId>tools</artifactId> 
          <version>1.7</version> 
          <scope>system</scope> 
          <systemPath>${java.home}/../lib/tools.jar</systemPath> 
         </dependency> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
</profile> 
+0

trông giống như một giải pháp cho tôi, bạn có mô tả cho giải pháp của mình không? Cảm ơn –

0

Không chắc ai đang lắng nghe quan đến chủ đề này nữa nhưng, những gì hey ...

tôi đã sử dụng transformSchemas tùy chọn ví dụ

<transformSchemas> 
    <transformSchema> 
     <uri>YOUR NS IN YOUR GENERATED SCHEMA FILE</uri> 
     <toFile>DESIRED NAME OF YOUR XSD FILE</toFile> 
    </transformSchema> 
</transformSchemas> 

cổ vũ

-m.

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