Maven - 抑制在Eclipse中覆盖托管版本警告

时间:2015-06-11 13:38:23

标签: eclipse maven spring-boot m2eclipse

我正在使用spring-boot,并遇到类似于here所述的错误。我在pom.xml中添加了以下内容。

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId><!--$NO-MVN-MAN-VER$-->
        <version>1.1.0.Final</version>
    </dependency>

我通过Spring启动覆盖了我的父pom.xml中定义的validation-api 1.0.0依赖关系,这给出了令人讨厌的警告信息:

  

覆盖托管版本1.0.0.GA以进行验证-api

如何在Eclipse中永久禁止此警告消息?它出现在我的pom.xml和我的问题视图中。

4 个答案:

答案 0 :(得分:29)

当出现该警告时,您可以打开警告上的快速修复菜单(Ctrl + 1)并选择

  

忽略此警告

这将在版本行中添加注释,例如:

<dependency>
   <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
   <version>1.1.0.Final</version><!--$NO-MVN-MAN-VER$-->
</dependency>

您的问题是您在错误的行上手动添加了评论。

答案 1 :(得分:21)

由于项目正在使用spring-boot,因此可以在此处找到更合适的答案:https://stackoverflow.com/a/35385268/1568658

(因为我遇到了同样的问题,上面的答案也不是很完整。我会在这里添加一个答案。)

问题原因:

spring-boot定义了许多依赖关系&amp;他们的版本,当你使用spring-boot作为父项时,这些依赖项被继承,并且用不同的版本覆盖其中一个依赖项会得到警告,因为它可能会破坏其他库。的依赖关系。

<强>解决方案:

<properties></properties>之间定义该依赖项的属性,以指定版本。

e.g

        <properties>
            <reactor.version>2.5.0.BUILD-SNAPSHOT</reactor.version>
        </properties>

如何查找属性名称:

  • 在eclipse中打开你的pom.xml。
  • ctrl + click标记上
  • <parent>打开父级的pom,需要递归点击两次以最终获得pom,其中artifactId为spring-boot-dependencies
  • 打开pom后,搜索您的依赖项,例如servlet-api,您就可以看到默认版本。

春天的文件更好地解释了它:https://spring.io/blog/2016/04/13/overriding-dependency-versions-with-spring-boot

答案 2 :(得分:3)

在主pom中输入您需要的版本。

此警告表示您正在尝试覆盖主(顶级)pom中定义的工件版本。只需在主pom中输入您需要的版本,您甚至不需要在其他poms中使用<version />来获取此依赖关系。

答案 3 :(得分:-2)

有用!我解决了这个问题。模块pom文件声明9.2.12.M0,而spring-boot参考V9.3。我覆盖父pom文件中的V9.2。跟随&#34; Eric Wang&#34;