2014-12-04 3 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) 

В родительском-ПОМ У меня есть свойства с версиями как

<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

+0

@wemu Я думаю, да, а «другой ребенок» - в базовом компоненте. –

ответ

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

Спасибо, я уже описал конфигурацию. Он работает только в том случае, если я сначала создаю базовый компонент. Есть ли способ отдельно построить подмодуль (другой-ребенок), не создавая сначала базовый компонент? –

+1

@DmitriyLarkin Что вы точно подразумеваете под _ «если я сначала создаю базовый компонент»? _ Если вы создаете «базовый компонент», «дочерний компонент» и «еще один ребенок», также создаются. Это идея агрегации. –