Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'dependencies.dependency.version' is missing error, but version is managed in parent

Tags:

java

maven-3

I have a maven project that contains several modules. In Eclipse (Juno, with m2e) it seems to compile fine. But when I do a maven install on one of the modules, the build fails immediately.

Parent pom:

  <groupId>com.sw.system4</groupId>   <artifactId>system4-parent</artifactId>   <version>${system4.version}</version>   <packaging>pom</packaging>   <name>System 4 Parent Project</name>   <modules>     <module>system4-data</module>      ...others...   </modules>   <properties>     <system4.version>0.0.1-SNAPSHOT</system4.version>     <spring.version>3.2.3.RELEASE</spring.version>     ... others...   </properties>    <dependencyManagement>     <dependencies>       <dependency>         <groupId>org.springframework</groupId>         <artifactId>spring-core</artifactId>         <version>${spring.version}</version>         <scope>runtime</scope>       </dependency>     ... lots of others ...     </dependencies>   </dependencyManagement> 

Child pom:

  <parent>     <groupId>com.sw.system4</groupId>     <artifactId>system4-parent</artifactId>     <version>0.0.1-SNAPSHOT</version>   </parent>   <artifactId>system4-data</artifactId>   <dependencies>     <dependency>         <groupId>org.springframework</groupId>         <artifactId>spring-core</artifactId>         <scope>runtime</scope>     </dependency>     ... lots of others...   </dependencies> 

When I build, I get the following output:

[ERROR] The build could not read 1 project -> [Help 1] [ERROR] [ERROR]   The project com.sw.system4:system4-data:0.0.1-SNAPSHOT (C:\work\eclips e_workspaces\systemiv\system4-parent\system4-data\pom.xml) has 8 errors  [ERROR]     'dependencies.dependency.version' for org.springframework:spring-cor e:jar is missing. @ line 16, column 16  ... others omitted for clarity ... 

I dont understand why it doesn't even attempt to compile. Ive tried removing the runtime scope from parent and child, and it makes no difference. Please help!

like image 682
fancyplants Avatar asked Jun 26 '13 16:06

fancyplants


2 Answers

A couple things I think you could try:

  1. Put the literal value of the version in the child pom

    <dependency>   <groupId>org.springframework</groupId>   <artifactId>spring-core</artifactId>   <version>3.2.3.RELEASE</version>   <scope>runtime</scope> </dependency> 
  2. Clear your .m2 cache normally located C:\Users\user.m2\repository. I would say I do this pretty frequently when I'm working in maven. Especially before committing so that I can be more confident CI will run. You don't have to nuke the folder every time, sometimes just your project packages and the .cache folder are enough.

  3. Add a relativePath tag to your parent pom declaration

    <parent>   <groupId>com.mycompany.app</groupId>   <artifactId>my-app</artifactId>   <version>1</version>  <relativePath>../parent/pom.xml</relativePath> </parent> 

It looks like you have 8 total errors in your poms. I would try to get some basic compilation running before adding the parent pom and properties.

like image 69
Brian Blain Avatar answered Oct 02 '22 15:10

Brian Blain


If anyone finds their way here with the same problem I was having, my problem was that I was missing the <dependencyManagement> tags around dependencies I had copied from the child pom.

like image 27
Sherms Avatar answered Oct 02 '22 15:10

Sherms