Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven - Suppress Overriding managed version warning in Eclipse

I am using spring-boot, and experienced an error similar to the one described here. I added the following to my pom.xml.

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

I am overriding the validation-api 1.0.0 dependency defined in my parent pom.xml, by way of Spring boot, and this gives the pesky warning message:

Overriding managed version 1.0.0.GA for validation-api

How can I permanently suppress this warning message in Eclipse? It shows up both in my pom.xml and my problems view.

like image 805
The Gilbert Arenas Dagger Avatar asked Jun 11 '15 13:06

The Gilbert Arenas Dagger


People also ask

How do I stop override managed version in Pom?

In this case, the dependency version of the main maven project should be updated and removed from the project module. As the version is updated in the main maven project, the new version is reflected in all maven module projects. Remove the <version> tag in module maven project pom. xml file.

How do I override a parent pom?

It sounds like A version 2.5 is being included transitively by another dependency. This puts both version 4.3 and 2.5 at the same length. By explicitly defining dependency of A 2.5 in your project it will then be the nearest and override any other versions.


2 Answers

When that warning shows up, you can open the Quick-Fix menu on the warning (Ctrl+1) and select

Ignore this warning

This will add the comment on the version line, like :

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

Your problem is you manually added that comment on the wrong line.

like image 121
Fred Bricon Avatar answered Oct 06 '22 08:10

Fred Bricon


Since the project is using spring-boot, a more proper answer could be found here: https://stackoverflow.com/a/35385268/1568658

(And since I got the same issue, and the above answer also is not very complete. I would add an answer here.)

Reason of issue:

spring-boot has defined many dependencies & their versions, when you use spring-boot as parent, these dependencies got inherited, and overriding one of the dependency with a different version would get the warning, because it might break other libraries' dependencies.

Solution:

Define a property for that dependency between <properties></properties>, to specify the version.

e.g

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

How to find the property name:

  • Open your pom.xml in IDEA or Eclipse.
  • Ctrl + Click on the <parent> tag to open pom of parent, and need to click twice recursively to finally get to the pom file with artifactId as spring-boot-dependencies.
  • Once you have opened that pom, search for your dependency, e.g servlet-api, and you can see the default version.

There is a document from spring explains it better: https://spring.io/blog/2016/04/13/overriding-dependency-versions-with-spring-boot

like image 29
user218867 Avatar answered Oct 06 '22 08:10

user218867