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

The*_*ger 34 eclipse m2eclipse maven spring-boot

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

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId><!--$NO-MVN-MAN-VER$-->
        <version>1.1.0.Final</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

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

覆盖managed-api的托管版本1.0.0.GA

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

Fre*_*con 35

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

忽略此警告

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

<dependency>
   <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
   <version>1.1.0.Final</version><!--$NO-MVN-MAN-VER$-->
</dependency>
Run Code Online (Sandbox Code Playgroud)

您的问题是您在错误的行上手动添加了注释.

  • 这是解决问题的一种不好的方法,因为它可能会破坏其他库的依赖性. (3认同)

Eri*_*ang 26

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

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

发行原因:

spring-boot定义了许多依赖项及其版本,当您使用spring-boot父项时,这些依赖项被继承,并且使用不同版本覆盖其中一个依赖项将获得警告,因为它可能会破坏其他库的依赖项.

解:

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

例如

        <properties>
            <reactor.version>2.5.0.BUILD-SNAPSHOT</reactor.version>
        </properties>
Run Code Online (Sandbox Code Playgroud)

如何找到属性名称:

  • 在eclipse中打开你的pom.xml.
  • ctrl + click<parent>标签上打开父元素的pom,需要递归点击两次,最后用artifactId作为pomspring-boot-dependencies
  • 打开pom后,搜索您的依赖项,例如servlet-api,您可以看到默认版本.

Spring提供的文档更好地解释了它:https://spring.io/blog/2016/04/13/overriding-dependency-versions-with-spring-boot


小智 5

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

此警告意味着您正在尝试覆盖主(顶级)pom.xml 中定义的工件版本。只需在主 pom 中输入您需要的版本,您甚至不需要<version />在其他 pom 中使用此依赖项。