2014-12-04 68 views
1

我有以下结构:的Maven无法获得访问父属性

parent-pom (pom) 
| 
    - base-component (with <parent> parent-pom </parent>)(pom) 
    | 
    -- child-component (with <parent> base-component </parent>)(jar) 
    -- some-folder/another-child (with <parent> base-component </parent>)(jar) 

在父POM我有一个像

<properties> 
<product-version>3.7.8</product-version> 
</properties> 

当我建立child-component和使用有${product-version}与版本的属性 - 它的构建没有错误。 但是,当我试图建立another-child(与子组件作为依赖) - maven无法读取${product-version}或抛出错误Could not find artifact base-component即使我设置<relativePath>

我认为问题是基础组件和另一个孩子之间的文件夹,但我无法将其移动到水平位置。

任何想法?

+0

“另一个孩子”是否使用正确的家长? – wemu 2014-12-04 16:56:26

+0

@wemu我认为是,基础组件中的“另一个孩子”是。 – 2014-12-04 17:01:46

回答

0

确保another-child模块中的相对路径设置正确。由于它的另一个目录下,它的父base-component应达到两个目录:

<parent> 
    <groupId>...</groupId> 
    <artifactId>base-component</artifactId> 
    <version>...</version> 
    <relativePath>../../pom.xml</relativePath> 
</parent> 

还要确保在base-component项目,该模块定义包括another-child额外的路径,所以它应该是这样的:

<modules> 
    <module>child-component</module> 
    <module>some-folder/another-child</module> 
</modules> 

之前建立another-child(或任何其他子模块),尝试建立(mvn install)整个项目,从根开始父。

+0

谢谢,我已经描述过配置。它只有在我首先构建基本组件时才有效。有没有办法独立构建子模块(另一个孩子),而无需首先构建基础组件? – 2014-12-04 19:20:45

+1

@DmitriyLarkin你真正的意思是_“如果我先建立基础组件”?_如果你建立'base-component','child-component'和'another-child'也被构建。这是聚合的想法。 – 2014-12-05 00:07:08