2012-04-30 29 views
11

Tôi đang sử dụng plugin jaxb2 xjc để tạo tệp java từ XSD. Do đó, tôi đã sử dụng để định cấu hình pom.xml của mình như sau:Plugin Maven JAXB2 XJC: Thực thi plugin M2E không được bao gồm

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxb2-maven-plugin</artifactId> 
      <version>1.3</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>xjc</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <packageName>com.mypackage.model</packageName> 
       <schemaDirectory>${basedir}/src/main/resources/XSD</schemaDirectory> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Tôi đã thay đổi môi trường phát triển của mình thành Eclipse Indigo và điều này không còn hiệu quả nữa. Lỗi nói: "Thực thi trình cắm không được bao gồm trong cấu hình vòng đời". Tôi hiểu rằng tôi phải xác định việc thực thi plugin của mình theo cách khác để nó hoạt động trong môi trường mới của tôi.

Tôi đã làm theo hướng dẫn trên trang này M2E plugin execution not covered nhưng các tệp nguồn không được tạo khi thực hiện giai đoạn generate-sources.

Ai đó có thể chỉ cho tôi cách chính xác tái cấu trúc pom để các tệp của tôi được tạo đúng cách không?

Cảm ơn bạn đã trợ giúp!

+0

Bạn đã bao giờ tìm thấy câu trả lời cho ngoại tuyến này chưa? Tôi đang cố gắng giải quyết cùng một vấn đề. –

+0

Không có ... Nhưng nếu bạn tìm thấy một, xin vui lòng gửi nó và tôi sẽ được vui để chấp nhận nó :) –

Trả lời

14

Nó chỉ ra rằng tôi đã làm cuối cùng tìm câu trả lời! Sự tích hợp của Eclipse với Maven đã biết các vấn đề tương thích với nhiều trình cắm thêm Maven.

Khi bạn thành công có thể chạy một Maven xây dựng từ dòng lệnh bên ngoài của Eclipse, nhưng nhưng Eclipse cho thấy "thực hiện không thuộc phạm vi" sai sót trong POM của bạn, sau đó thử thêm plugin này:

<build> 
    ... 
    <pluginManagement> 
     <plugins> 
      <!--This plugin's configuration is used to store Eclipse m2e settings 
       only. It has no influence on the Maven build itself. --> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.codehaus.mojo</groupId> 
            <artifactId>jaxb2-maven-plugin</artifactId> 
            <versionRange>[1.3,)</versionRange> 
            <goals> 
             <goal>xjc</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute /> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

Như đã nêu trong bình luận ở trên, plugin này không làm bất cứ điều gì bên ngoài Eclipse. Nó đơn giản chỉ cho Eclipse biết khi nào thực hiện các plugin JAXB, vì Eclipse không đủ thông minh để tự tìm ra nó.

Tôi tìm thấy đoạn mã này trên another StackOverflow question và đã sử dụng đoạn mã này cho plugin "jaxb2-maven-plugin" thay vì plugin được đề cập trong câu hỏi khác.

+0

Sáng nay tôi đã làm như trên và nó cố định lỗi nhật thực của tôi. – Venky

3

Bạn cũng có thể chuyển sang số maven-jaxb2-plugin có hỗ trợ trong M2E. Câu trả lời của Steve Perkins nói chung áp dụng cho những plugin mà M2E không hỗ trợ.

+0

Tôi sử dụng 'maven-jaxb2-plugin' với phiên bản mới nhất (0.13.1) trong dự án của tôi và vẫn gặp lỗi tương tự trong nhật thực như được hiển thị trong câu hỏi. Chỉ áp dụng các đường nối câu trả lời của Steve Parkins để sửa nó. – MJar

0

Tôi không chắc liệu điều này có áp dụng cho môi trường của bạn hay không, nhưng nếu ứng dụng được chia thành các mô-đun maven thì giải pháp tốt nhất phù hợp với nhu cầu của tôi cho đến nay là xóa tất cả các mô-đun bị ảnh hưởng khỏi IDE nhật thực. Bất cứ khi nào tôi cần phải tạo lại tôi chỉ đơn giản là xây dựng từ dòng lệnh với cài đặt mvn. Eclipse sau đó sử dụng các gói từ repo và không cố gắng tự xây dựng, không cần runOnIncremental fiddle-around (mà tôi đã sử dụng trong một thời gian), không có mô-đun/dòng màu đỏ, cũng xây dựng nhanh hơn.

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