49

I have several Maven projects that each have some common functionality or at least common configuration/dependencies. I extracted this in to a common pom.xml, and then modularlized several facets, for example persistence, Spring related dependencies, and so on - all in their own modules which inherit from this parent POM.

Right now, "Common" is version 1.0.0 and I have "ProjectA" that I wish to inherit from it. I receive the warning:

Version is duplicate of parent version

I don't fully understand why this is a warning. I thought I had the option of omitting the version from my project POM in order to inherit the version. (I do this for common modules - for example, common-spring adds additional common dependencies for Spring apps, and in fact, ProjectA actually inherits from common-spring.)

Isn't it just that - an option? If I change my ProjectA version to 1.0.1 or 2.0.0 all is well.

jmj
  • 237,923
  • 42
  • 401
  • 438
Doug Moscrop
  • 4,479
  • 3
  • 26
  • 46
  • For what it is worth, I am careful to only inherit from POMs and I depend on JARs. I declare a common.version property that is used in dependencyManagement, so that ProjectA can inherit from common-spring (which inherits from common) and depend on common-io (which also inherits from common) and they are all the same version. – Doug Moscrop Nov 24 '11 at 22:58
  • Is this particular warning issued by m2eclipse or Maven itself? (You can check on the command-line with `mvn verify`—probably—if Maven emits something like this or not.) Other than this it would be _really_ helpful if you could post the `pom.xml` files in question. It is hard to _visualize_ what's going on in your setup. – Kohányi Róbert Dec 04 '11 at 13:04
  • That's fair. I will do this on Wednesday because I am on vacation (no such thing as a vacation from SO though!). I am pretty sure it is a m2e warning. – Doug Moscrop Dec 04 '11 at 17:13
  • @Doug This now appears to be fixed, see [my answer below](http://stackoverflow.com/a/12711042/474189). – Duncan Jones Oct 03 '12 at 14:50

3 Answers3

62

Newer versions of m2e (since 1.1) now allow you to disable this warning.

Preferences > Maven > Warnings > Disable "Version is duplicate of parent version" warning

Original bug report: https://bugs.eclipse.org/bugs/show_bug.cgi?id=356796

Duncan Jones
  • 67,400
  • 29
  • 193
  • 254
  • 3
    +1 you can tick it on in the preferences, but you'll need to do Project > Maven > Update Project ... in order for them to go away – slf Apr 25 '14 at 19:55
  • 1
    @slf In the latest versions of Eclipse, as soon as you change Maven's **Errors/Warnings** settings in the preferences and click "Apply", a popup window will appear offering you to update projects now. – informatik01 Jul 21 '15 at 06:56
58

It´s just m2e trying to be clever because the version element (like group id) sometimes can be redundant and be can be inherited from the parent POM, so it would be safe to remove this element from your child POM.

But sometimes this is not a redundant information, like when the parent and the child project have different life cycles, and m2e should allow this warning to be disabled. Unfortunately there is no way to do this yet: http://dev.eclipse.org/mhonarc/lists/m2e-users/msg01961.html

UPDATE: As Duncan says bellow, in newer versions you can disable this warning.

Fabricio Lemos
  • 2,905
  • 2
  • 31
  • 31
2

If it really annoys you, use a property to supress the warning with some cunning sleight of hand:

<version>${api.version}</version>
<properties>
    <api.version>0.0.1-SNAPSHOT</api.version>
</properties>

but all you'll really be doing is moving the warning to the console output:

[WARNING] Some problems were encountered while building the effective model for [project]
[WARNING] 'version' contains an expression but should be a constant.
DJDaveMark
  • 2,669
  • 23
  • 35