Проблема управления зависимостями Maven

У меня есть проект с несколькими pom, родительский pom импортирует внешний модуль как таковой. Этот внешний модуль использует определенные классы Saxon, я импортирую его как таковой:

        <dependency>
            <groupId>org.test</groupId>
            <artifactId>test-framework</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

В дочернем pom мы импортируем его как таковой:

    <dependency>
        <groupId>org.test</groupId>
        <artifactId>test-framework</artifactId>
        <scope>provided</scope>
    </dependency>

У меня сложилось впечатление, что если вы импортируете его как таковой в родительский модуль, все транзитивные зависимости внешнего модуля будут импортированы. Когда я создаю свой проект, саксонские классы отсутствуют, и единственный способ заставить их появиться — это явно вытащить их в моем pom. Разве это не противоречит точке транзитивного разрешения зависимостей. я собираюсь явно вытащить все транзитивные зависимости в любом проекте, который импортирует этот внешний модуль?


person user898465    schedule 22.04.2015    source источник


Ответы (1)


Вы пытались изменить область зависимости?

<dependency>
    <groupId>org.test</groupId>
    <artifactId>test-framework</artifactId>
    <scope>compile</scope>
</dependency>

Это должно сделать работу.

Читайте об областях зависимости здесь:

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

person AlexanderW    schedule 22.04.2015
comment
Это область действия по умолчанию, если она не указана, как указано выше. - person user898465; 23.04.2015
comment
Правильно, компиляция - это область по умолчанию. Но вы выбрали «при условии» в качестве области действия. Замените это на compile или удалите. - person AlexanderW; 23.04.2015