Issue
I have two projects: Parent project: A, Sub project: B
A/pom.xml:
<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>pom</packaging>
And in B/pom.xml, I have:
<parent>
<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<groupId>com.dummy.bla.sub</groupId>
<artifactId>kid</artifactId>
I want B to inherit the version from parent, so the only place in my case I need to put 0.1-SNAPSHOT
is A/pom.xml
. But if i remove the <version>0.1-SNAPSHOT</version>
from B/pom.xml
under the parent section, maven complains about the missing version for the parent.
Is there a way I can just use ${project.version}
or something like this to avoid having 01.-SNAPSHOT
in both poms?
Solution
EDIT: Since Maven 3.5.0 there is a nice solution for this using ${revision}
placeholder. See FrVaBe's answer for details. For previous Maven versions see my original answer below.
No, there isn't. You always have to specify parent's version. Fortunately, it is inherited as the module's version what is desirable in most cases. Moreover, this parent's version declaration is bumped automatically by Maven Release Plugin, so - in fact - it's not a problem that you have version in 2 places as long as you use Maven Release Plugin for releasing or just bumping versions.
Notice that there are some cases when this behaviour is actually pretty OK and gives more flexibility you may need. Sometimes you want to use some of previous parent's version to inherit, however that's not a mainstream case.
Answered By - MichaĆ Kalinowski
Answer Checked By - Gilberto Lyons (JavaFixing Admin)