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
Другие вопросы по тегам