首页 文章

关于build.plugins.plugin.version的Maven 3警告

提问于
浏览
279

自从我更新到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.

7 回答

  • 9

    pom.xml 文件中的 <plugin> <artifactId> 之后添加 <version> 元素 . 找到以下文本:

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

    添加版本标记:

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

    应该解决警告 .

    关于这个:

    org.apache.maven.plugins的'build.plugins.plugin.version':缺少maven-compiler-plugin

    很多人都提到了问题发生的原因,但没有提出修复建议 . 我需要做的就是进入我的项目的POM文件,并添加 <version> 标签,如上所示 .

    要发现版本号,一种方法是在完成运行后查看Maven的输出 . 如果您缺少版本号,Maven将显示其默认版本:

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

    获取该版本号(如上面的 2.3.2 )并将其添加到您的POM中,如图所示 .

  • 4

    运行如下:

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

    对于没有版本的插件 . 你得到输出:

    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
    

    使用输出中显示的版本 .

    UPDATE 如果要在版本列表中进行选择,请使用http://search.maven.org/http://mvnrepository.com/请注意,您最喜欢的Java IDE必须具有Maven包搜索对话框 . 只需检查文档 .

    SUPER UPDATE 我也用:

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

    最近我发现如何获得插件(或库)的 latest 版本,因此不再需要谷歌搜索或访问Maven Central:

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

    Maven 3对POM结构的限制更多 . 例如,您必须设置插件版本 .

    使用maven 3.1,这些警告可能会破坏你的构建 . maven2和maven3之间有更多变化:https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes

  • 12

    我正在为我的项目使用父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>
    

    项目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">
        ....
        <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/

  • 2

    从以下网站获取最新版本信息:

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

    单击最新版本(或您要使用的版本),您将看到依赖项信息:

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

    您可能希望使用版本标记和插件标记的注释 .

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

    如果您愿意,可以修改您的pom,以便在另一个答案中列出的属性标记中包含版本信息 .

  • 0

    它's great answer in here. And I want to add '为什么在Maven3'中添加一个元素 .
    Maven 3.x Compatibility Notes

    插件Metaversion解决方案在内部,Maven 2.x使用特殊版本标记RELEASE和LATEST来支持自动插件版本解析 . 这些变形也在宣言的要素中得到承认 . 为了可重现的构建,Maven 3.x不再支持在POM中使用这些metaversion . 因此,用户需要使用具体版本替换这些metaversion的出现 .

    我也发现maven-compiler-plugin - usage

    注意:如果您未指定插件的版本,Maven 3.0将发出警告 .

  • 345

    在pom.xml中搜索“maven-jar-plugin”并添加版本标签maven版本

相关问题