Maven - наследование зависимостей - предоставляется

Я использую POM зависимостей, которые я затем перейду и включу в другие проекты в качестве зависимости. Проблема, с которой я сталкиваюсь, заключается в том, что, когда он объединяет POM с этими зависимостями, он появляется, когда я объявляю зависимости области видимости, при условии, что они не включены.

Можно ли включить предоставленные зависимости в POM зависимостей с областью действия ? Я часто объявляю, какие API мне нужны, и затем включаю реализацию как зависимость времени выполнения.

10
задан ROMANIA_engineer 19 April 2015 в 22:16
поделиться

1 ответ

Если предоставляется зависимость, почему ее нельзя наследовать с той же областью действия, чтобы мне не нужно было ее объявлять?

Он является унаследованным с тем же объемом. Учитывая следующий родительский pom.xml:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.stackoverflow.Q3597684</groupId>
  <artifactId>root</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>Q3597684 - Root</name>
  <packaging>pom</packaging>
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

И следующий pom.xml, который наследуется от корневого артефакта:

<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>root</artifactId>
    <groupId>com.stackoverflow.Q3597684</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <artifactId>child</artifactId>
  <packaging>war</packaging>
  <name>Q3597684 - Child</name>
  <dependencies/>
</project>

Выполняется mvn dependency:tree от дочернего элемента дает следующий вывод:

$ mvn dependency:tree[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Q3597684 - Child
[INFO]    task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] com.stackoverflow.Q3597684:child:war:1.0-SNAPSHOT
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] \- junit:junit:jar:3.8.1:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

Предоставленный servlet-api присутствует, как и ожидалось.

Возможно, вы (неправильно) используете раздел dependencyManagement?

19
ответ дан 3 December 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: