2010-11-08 35 views
252

Kể từ khi tôi cập nhật để Maven 3 tôi nhận được thông điệp cảnh báo sau đối với mỗi build:Maven 3 cảnh báo về build.plugins.plugin.version

Làm thế nào tôi có thể thoát khỏi những cảnh báo này?

[INFO] Scanning for projects... 
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for proj:id:jar:3.1 
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-javadoc-plugin is missing. @ line 195, column 15 
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 204, column 15 
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 227, column 15 
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 215, column 15 
[WARNING] 'reporting.plugins.plugin.version' for org.codehaus.mojo:jdepend-maven-plugin is missing. @ line 271, column 15 
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. 
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. 

Trả lời

307

Thêm phần tử <version> sau <plugin><artifactId> trong tệp pom.xml của bạn. Tìm văn bản sau đây:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 

Thêm thẻ phiên bản với nó:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 

Cảnh báo nên được giải quyết.

Về vấn đề này:

'build.plugins.plugin.version' cho org.apache.maven.plugins: maven-biên dịch-plugin là mất tích

Nhiều người đã đề cập lý do tại sao vấn đề đang xảy ra, nhưng không đề xuất sửa lỗi. Tất cả những gì tôi cần làm là đi vào tệp POM của tôi cho dự án của tôi và thêm thẻ <version> như được hiển thị ở trên.

Để khám phá số phiên bản, một cách là xem kết quả của Maven sau khi kết thúc chạy. Trong trường hợp bạn đang thiếu số phiên bản, Maven sẽ hiển thị phiên bản mặc định của nó:

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ entities --- 

Đi mà số phiên bản (như trong 2.3.2 ở trên) và thêm nó vào POM của bạn, như được hiển thị.

+4

@JBT không hiểu tại sao? xây dựng maven có nghĩa là để được ổn định, vì vậy những gì một phiên bản sẽ sử dụng nên được xác định rõ ràng. Đó là lý do tại sao maven yêu cầu nó. Giống như thông điệp nói, "Rất được khuyến khích để khắc phục những vấn đề này vì chúng đe dọa sự ổn định của công trình xây dựng của bạn". – eis

+0

@eis Có ý nghĩa. Cảm ơn. – JBT

+3

Nó là một chút của một lẻ mặc dù bạn chỉ nhận được vấn đề này nếu bạn đã thêm một mục nhập cho các plugin vào tệp POM dự án.POM hiệu quả có phần tử phiên bản nhưng bạn vẫn cần phải thêm phần tử phiên bản vào dự án POM để loại bỏ cảnh báo này. – oenpelli

63

Run như:

 
    $ mvn help:describe -DartifactId=maven-war-plugin -DgroupId=org.apache.maven.plugins 

cho các plug-in mà không có phiên bản. Bạn nhận được kết quả:

 
Name: Maven WAR Plugin 
Description: Builds a Web Application Archive (WAR) file from the project 
    output and its dependencies. 
Group Id: org.apache.maven.plugins 
Artifact Id: maven-war-plugin 
Version: 2.2 
Goal Prefix: war 

Sử dụng phiên bản được hiển thị trong đầu ra.

CẬP NHẬT Nếu bạn muốn chọn trong danh sách các phiên bản, sử dụng http://search.maven.org/ hoặc http://mvnrepository.com/ Lưu ý rằng yêu thích Java IDE của bạn phải có Maven gói tìm kiếm thoại. Chỉ cần kiểm tra tài liệu.

SUPER CẬP NHẬT tôi cũng sử dụng:

$ mvn dependency:tree 
$ mvn dependency:list 
$ mvn dependency:resolve 
$ mvn dependency:resolve-plugins # <-- THIS 

Gần đây tôi khám phá làm thế nào để có được phiên bản mới nhất cho các plug-in (hoặc thư viện) vì vậy không còn cần cho googling hoặc quý khách đến thăm Maven Trung:

$ mvn versions:display-dependency-updates 
$ mvn versions:display-plugin-updates  # <-- THIS 
+6

+1. Một biến thể thay thế và nhỏ gọn hơn: 'mvn help: description -Dplugin = groupId: artifactId' – informatik01

+2

Thực tế điều này đã không đưa ra một giải pháp nhưng nó có giá trị nội dung anyway: làm thế nào thực sự có thể tìm thấy phiên bản được sử dụng/mong đợi. Có lẽ nó sẽ đáng để đề cập đến việc đặt các phiên bản plugin này trong thẻ cha-pom bằng cách sử dụng thẻ pluginManagement: http://stackoverflow.com/a/10483284/1023341 – gkephorus

8

Tôi đang sử dụng cha mẹ cho dự án của mình và muốn chỉ định phiên bản ở một nơi, vì vậy tôi đã sử dụng các thuộc tính để xác định phiên bản:

pom mẹ:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    .... 
    <properties> 
     <maven-compiler-plugin-version>2.3.2</maven-compiler-plugin-version> 
    </properties> 
    .... 
</project> 

pom dự án:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    .... 
    <build> 
     <finalName>helloworld</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>${maven-compiler-plugin-version}</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Xem thêm: https://www.allthingsdigital.nl/2011/04/10/maven-3-and-the-versions-dilemma/

+0

Tôi nghĩ nó có thể tốt hơn, hoặc ít nhất tự nhiên hơn, sử dụng pluginManagement cho các phiên bản của các plugin. –

+0

Trừ khi bạn có một plugin quản lý ghi đè trong POM con. –

2

có được thông tin phiên bản mới nhất từ:

https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin

nhấp chuột trên phiên bản mới nhất (hoặc một trong những bạn muốn sử dụng) và bạn sẽ thấy các thông tin phụ thuộc:

<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin --> 
<dependency> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
</dependency> 

bạn có thể muốn sử dụng thẻ phiên bản và nhận xét cho bạn thẻ plugin.

<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin --> 
<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <source /> 
     <target /> 
    </configuration> 
</plugin> 

nếu bạn thích, bạn có thể sửa đổi pom để có thông tin phiên bản trong thẻ thuộc tính như được nêu trong câu trả lời khác.

1

Đó là câu trả lời tuyệt vời tại đây. Và tôi muốn thêm 'Why Add a element in Maven3'.
Trong Maven 3.x Compatibility Notes

Plugin Metaversion Nghị quyết
Bên trong, Maven 2.x sử dụng đánh dấu phiên bản đặc biệt phát hành và mới nhất để hỗ trợ tự động độ phân giải phiên bản plugin. Các siêu dữ liệu này cũng được công nhận trong phần tử để khai báo. Vì lợi ích của các bản dựng lại có thể tái tạo, Maven 3.x không còn hỗ trợ việc sử dụng các siêu dữ liệu này trong POM nữa. Kết quả là, người dùng sẽ cần phải thay thế các lần xuất hiện của các siêu dữ liệu này bằng một phiên bản cụ thể.

Và tôi cũng thấy trong maven-compiler-plugin - usage

Lưu ý: Maven 3.0 sẽ phát đi cảnh báo nếu bạn không xác định phiên bản của một plugin.

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