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

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.



답변

파일 에서 <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에 추가하십시오.


답변

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

  $ 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


답변

Maven 3은 POM-Structure에서 더 제한적입니다. 예를 들어 플러그인 버전을 설정해야합니다.

maven 3.1에서는 이러한 경고로 인해 빌드가 중단 될 수 있습니다. maven2와 maven3 사이에 더 많은 변경 사항이 있습니다. https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes


답변

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

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을 수정할 수 있습니다.


답변

내 프로젝트에 부모 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/


답변

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

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

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

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


답변

pom.xml에서 “maven-jar-plugin”을 검색하고 버전 태그를 추가하십시오.