Maven иерархический поиск зависимостей
Поэтому у меня есть проблема, которая заключается в том, что Maven, похоже, игнорирует зависимости, даже если они должны быть видны в иерархии.
У меня есть следующая иерархия проектов:
родитель
--projA
--sub-Parent1
---- projB
---- projC
Все уровни связаны через <parent>
тег.sub-parent1
имеет projB
а также projC
объявлены как модули и никаких зависимостей не объявлено. Но projB
имеет зависимость от projA
, И строит весь sub-parent1
модуль не будет строить projA
, что странно, потому что projB
знает о sub-parent1
а также sub-parent1
знает о parent
и он знает о зависимости (projA
). Но Maven не строю его, когда я строю весь sub-parent1
или, например, -pl projB -am clean install
,
Любая помощь приветствуется.
Изменить: я создал структуру, представляющую эту структуру. Попробуй собрать подпочту: dropmefiles.com/5l42j
Редактировать: родительский пом:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<modules>
<module>projA</module>
<module>sub-parent1</module>
</modules>
</project>
projA:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>test</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>projA</artifactId>
<version>1.0</version>
</project>
суб-Parent1:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>test</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
</parent>
<artifactId>sub-parent1</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<modules>
<module>projB</module>
</modules>
</project>
projB:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>test</groupId>
<artifactId>sub-parent1</artifactId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>projB</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>projA</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
Редактировать: Хотя у меня было то же решение, что и в многомодульном проекте Maven, я не могу найти одноуровневый модуль - эта проблема отличается, так как она касается не только многомодульного, но и многоуровневого (несколько уровней модулей) проекта, и человек, который там не говорил явно maven чтобы построить зависимости, а.
Решение: Таким образом, кажется, что единственное решение - построить такую многоуровневую структуру из pom самого верхнего уровня, в моем случае это будет родительский (так что parent является текущим каталогом) и модуль адреса, который вам нужно построить по относительному пути от родительского. Это приводит к:
mvn -pl sub-parent1/projB -am clean install
Заказ будет:
[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] projA
[INFO] sub-parent1
[INFO] projB
1 ответ
Таким образом, кажется, что единственное решение - построить такую многоуровневую структуру из pom самого верхнего уровня, в моем случае это будет родительский (так что parent является текущим каталогом) и модуль адреса, который вам нужно построить по относительному пути от родительского. Это приводит к:
mvn -pl sub-parent1/projB -am clean install
Заказ будет:
[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] projA
[INFO] sub-parent1
[INFO] projB