2015-03-12 2 views
0

У меня есть установки Maven проект следующим образом:Maven не решает добродушный Dependency

. 
├── pom.xml (1) 
├── common 
| └── pom.xml (2) 
└── experimental 
    ├── pom.xml (3) 
   └── data_viewer 
     └── pom.xml (4) 

pom.xml (1) выглядит следующим образом:

<groupId>com.company</groupId> 
<artifactId>parent</artifactId> 
<version>1</version> 
<packaging>pom</packaging> 

<modules> 
    <module>common</module> 
    <module>experimental</module> 
</modules> 

pom.xml (2):

<parent> 
    <groupId>com.company</groupId> 
    <artifactId>parent</artifactId> 
    <version>1</version> 
</parent> 

<artifactId>common</artifactId> 

pom.xml (3):

<parent> 
    <groupId>com.company</groupId> 
    <artifactId>parent</artifactId> 
    <version>1</version> 
</parent> 

<groupId>com.company.experimental</groupId> 
<artifactId>parent</artifactId> 
<packaging>pom</packaging> 

<modules> 
    <module>data_viewer</module> 
</modules> 

pom.xml (4):

<parent> 
    <artifactId>parent</artifactId> 
    <groupId>com.company.experimental</groupId> 
    <version>1</version> 
</parent> 

<artifactId>data_viewer</artifactId> 

<dependencies> 
    <dependency> 
     <groupId>com.company</groupId> 
     <artifactId>common</artifactId> 
     <version>${project.parent.version}</version> 
    </dependency> 
<dependencies> 

Запуск mvn package -pl data_viewer -am из результатов experimental каталогов в следующей ошибки:

Failed to execute goal on project data_viewer: Could not resolve dependencies for project com.company.experimental:data_viewer:jar:1: The following artifacts could not be resolved: com.company:common:jar:1 

Почему Maven не знает, как решить com.company.common? Запуск Apache Maven 3.2.5

+0

Вы построили общую банку? если вы это сделали, убедитесь, что он находится в вашем местном репо. Я думаю, что «общий» никогда не строится, потому что вы запускаете сборку только для «экспериментальных». попробуйте запустить сборку из вашего «родителя». – OhadR

+0

Я попытался запустить 'mvn install -pl common' из родительского каталога до запуска' mvn package -pl data_viewer -am', он все еще терпит неудачу, также флаг '-am' должен иметь maven для создания всех зависимостей для меня, о которых я думал. . – qwwqwwq

+0

попробуйте запустить из родительской «mvn clean install». – OhadR

ответ

1

Реакторные сборки не могут вычислять и строить модули, указанные родителем текущего агрегатора pom, то есть они не могут пересекаться. Но они могут перейти на любой уровень и построить модули детей.

Итак, в приведенном выше примере запустите следующее из корневой папки.

mvn package -pl experimental/data_viewer -am 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Build Order: 
[INFO] 
[INFO] parent 
[INFO] common 
[INFO] parent <-- experimental folder one 
[INFO] data_viewer 
+0

работает как шарм с одним маленьким редактированием (\ -> /)! – qwwqwwq

+0

Спасибо. Windoz :) – Raghuram