Maven: дочерний модуль не может наследовать зависимости родительского модуля - PullRequest
0 голосов
/ 02 мая 2019

Это мой родительский пом

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.github.fish56</groupId>
    <artifactId>MavenModules</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>dao</module>
    </modules>
    <packaging>pom</packaging>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.6</version>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

это помпа моего дочернего модуля

    <parent>
        <artifactId>MavenModules</artifactId>
        <groupId>com.github.fish56</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dao</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

Хотелось бы, чтобы дочерний модуль мог наследовать зависимости родителя, но это не удалось.

Я не могу использовать ломбок или джунит в моем детском пом.

А это мое файловое дерево

.
├── dao
│   ├── pom.xml
│   ├── src
│   └── target
├── pom.xml

Я думаю, что должен быть способ сделать некоторые зависимости осколками всех модулей, но я не могу найти решение.

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

В родительском POM основное различие между <dependencies> и <dependencyManagement> заключается в следующем:

Артефакты, указанные в разделе <dependencies>, будут включены ВСЕГДА в качестве зависимостей дочернего модуля (модулей).

Артефакты, указанные в разделе <dependencyManagement>, будут включены только в дочерний модуль, если они также были указаны в разделе <dependencies>самого дочернего модуля.

Более подробную информацию можно найти по следующей ссылке:

Различия между dependencyManagement и зависимостями в Maven

0 голосов
/ 02 мая 2019

Вы импортируете спецификацию lombok

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
            <scope>import</scope>
        </dependency>

и затем пытаетесь использовать ее в качестве зависимости.Но спецификация - это просто список записей зависимостей.Это не может быть зависимость дочернего проекта.

...