build.plugins.plugin.version에 대한 Maven 3 경고


313

Maven 3으로 업데이트 한 후 각 빌드마다 다음과 같은 경고 메시지가 나타납니다.

이러한 경고를 없애려면 어떻게해야합니까?

[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.

1
Maven 3.5.3에서 이것은 이제 오류입니다. 경고를 무시하지 마십시오! 플러그인 버전을 찾는 방법에 대한 답변은 @gavenkoa에게 감사드립니다.
jwm

답변:


400

파일 에서 <version>뒤에 요소를 추가 하십시오. 다음 텍스트를 찾으십시오.<plugin> <artifactId>pom.xml

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

버전 태그를 추가하십시오.

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

경고를 해결해야합니다.

이것을 고려하면:

org.apache.maven.plugins : maven-compiler-plugin에 대한 'build.plugins.plugin.version'이 누락되었습니다

많은 사람들이 문제가 발생하는 이유를 언급 했지만 해결책을 제시하지는 않습니다. 프로젝트의 POM 파일로 이동하여 <version>위와 같이 태그를 추가하기 만하면됩니다.

버전 번호를 확인하는 한 가지 방법은 Maven의 실행이 완료된 후 출력을 확인하는 것입니다. 버전 번호가 누락되면 Maven은 기본 버전을 표시합니다.

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

2.3.2위와 같이 해당 버전 번호 를 사용하여 그림과 같이 POM에 추가하십시오.


4
@JBT 왜 그런지 이해하지 못합니까? maven 빌드는 안정적이기 때문에 사용할 버전을 명시 적으로 정의해야합니다. 그것이 maven이 요구하는 이유입니다. 메시지가 말했듯이 "이 문제는 빌드의 안정성을 위협하므로 문제를 해결하는 것이 좋습니다."
es

3
플러그인에 대한 항목을 프로젝트 POM 파일에 추가 한 경우에만이 문제가 발생하기 때문에 조금 이상합니다. 유효 POM에는 버전 요소가 있지만이 경고를 제거하려면 여전히 프로젝트 POM에 버전 요소를 추가해야합니다.
oenpelli

2
원래 질문과 동일한 경고가 표시되지만 pom.xml에 maven-compiler-plugin에 대한 참조가 없습니다. 내가 무엇을 놓치고 있습니까? 감사!
Vítor E. Silva Souza

3
나를 위해 일하지 않았다. 플러그인 버전 태그가 이미있었습니다.
Erran Morad

4
2.3.2가 최신 버전입니까? 어느 쪽인지 어떻게 알 수 있습니까? 아니면 상관 없어?
Pocketkid2

84

다음과 같이 실행하십시오.

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

버전이없는 플러그인의 경우. 당신은 출력을 얻는다 :

이름 : Maven WAR Plugin
설명 : 프로젝트에서 WAR (Web Application Archive) 파일을 빌드합니다.
  출력과 그 의존성.
그룹 ID : org.apache.maven.plugins
유물 ID : maven-war-plugin
버전 : 2.2
목표 접두사 : 전쟁

출력에 표시된 버전을 사용하십시오.

업데이트 버전 목록 중에서 선택하려면 http://search.maven.org/ 또는 http://mvnrepository.com/을 사용 하십시오. 선호하는 Java IDE에는 Maven 패키지 검색 대화 상자 가 있어야합니다 . 문서를 확인하십시오.

슈퍼 업데이트 또한 사용합니다 :

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

최근 플러그인 (또는 라이브러리)의 최신 버전 을 얻는 방법을 발견 하여 더 이상 인터넷 검색이나 Maven Central을 방문 할 필요가 없습니다 .

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

6
+1. 대안적이고 더 작은 변형 :mvn help:describe -Dplugin=groupId:artifactId
informatik01

3
실제로 이것은 해결책을 제공하지는 않았지만 어쨌든 가치있는 내용입니다. 실제로 사용 / 예상되는 버전을 어떻게 찾을 수 있습니까? pluginManagement-tag : stackoverflow.com/a/10483284/1023341
gkephorus


11

다음에서 최신 버전 정보를 얻으십시오.

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

최신 버전 (또는 사용하려는 버전)을 클릭하면 종속성 정보가 표시됩니다 (2019-05 기준 3.8.1).

<!-- 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.8.1</version>
</dependency>

플러그인 태그에 버전 태그와 주석을 사용할 수 있습니다.

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

원하는 경우 다른 답변에 설명 된대로 속성 태그에 버전 정보를 갖도록 pom을 수정할 수 있습니다.


10

내 프로젝트에 부모 pom을 사용하고 있으며 한 곳에서 버전을 지정하고 싶었으므로 속성을 사용하여 버전을 지정했습니다.

부모 치어 :

<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>

프로젝트 퐁 :

<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>

참조 : https://www.allthingsdigital.nl/2011/04/10/maven-3-and-the-versions-dilemma/


1
플러그인 버전에 pluginManagement를 사용하는 것이 더 좋거나 더 자연 스럽습니다.
Jonathan Rosenne 2012 년

하위 POM에 우선하는 pluginManagement가있는 경우를 제외하고.
Jonathan Rosenne

2

여기에 큰 대답입니다. 그리고 'Maven3에 요소를 추가하는 이유'를 추가하고 싶습니다.
에서 메이븐 3.X 호환성 노트

플러그인 메타
버전 분석 내부적으로 Maven 2.x는 자동 버전 플러그인을 지원하기 위해 특수 버전 마커 RELEASE 및 LATEST를 사용했습니다. 이러한 메타 버전은 선언 요소에서도 인식되었습니다. 재현 가능한 빌드를 위해 Maven 3.x는 더 이상 POM에서 이러한 메타 버전 사용을 지원하지 않습니다. 결과적으로 사용자는 이러한 메타 버전 발생을 구체적인 버전으로 교체해야합니다.

그리고 maven-compiler-plugin 에서도 찾을 수 있습니다-사용법

참고 : 플러그인 버전을 지정하지 않으면 Maven 3.0에서 경고를 표시합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.