2012-05-09 23 views
21

Tôi hiện đang thực hiện một số dọn dẹp các dự án Java sử dụng Maven và sử dụng NetBeans IDE để khắc phục các sự cố trong POM. Tôi đã đặt Maven 3.0.4 trong IDE làm phiên bản Maven, nhưng các nhà phát triển khác hoặc hệ thống Intuousation Continuous của chúng tôi có thể có các cài đặt khác nhau.Có thể và nên một Maven POM xác định nếu nó đòi hỏi Maven 3 hoặc mới hơn?

Có thể 'thực thi' một phiên bản Maven cụ thể trực tiếp trong POM (ví dụ bằng cách sử dụng phần tử Maven 3 cụ thể) không?

Trả lời

23

Có thể và bạn nên làm như vậy. Một số plugin Maven yêu cầu Maven 3 trở lên.

Sử dụng maven-enforcer-plugin bằng cách thêm dòng sau vào pom.xml của bạn:

<build> 
    <plugins> 
    <plugin> 
     <inherited>true</inherited> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-enforcer-plugin</artifactId> 
     <version>1.3.1</version> 
     <executions> 
      <execution> 
      <id>enforce-maven-3</id> 
      <goals> 
       <goal>enforce</goal> 
      </goals> 
      <configuration> 
       <rules> 
       <requireMavenVersion> 
        <version>3.0.5</version> 
       </requireMavenVersion>     
       </rules> 
       <fail>true</fail> 
      </configuration> 
      </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 
5

Điều tốt nhất bạn có thể làm là sử dụng Enforcer plugin. Dưới đây là ví dụ:
http://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html

Không có phương pháp tự do nào trong chính Maven để thực hiện việc này. Có thực sự là prerequisites thẻ nhưng nó không hoạt động tốt, bởi vì trẻ em không kế thừa nó.

+0

Quan tâm bao gồm các liên kết vì chúng có thể chết ... Và lưu ý đã có một câu trả lời bao gồm các đoạn có liên quan. – Barett

7

Một lựa chọn khác là sử dụng các yếu tố điều kiện tiên quyết trong pom, ví dụ:

<project> 
    ... 
    <prerequisites> 
     <maven>3.0.0</maven> 
    </prerequisites> 
    ... 
</project> 

Như đã đề cập Michal Kalinowski's answer - phương pháp đơn giản này không làm việc rất tốt cho các dự án trẻ em.

Đối với một bản tóm tắt trong đó cách tiếp cận sẽ làm việc tốt nhất cho bạn, xem tại đây: enforcing maven 3 - when to use maven enforcer plugin? when to use pom prerequisites element?

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