Я использую POM зависимостей, которые я затем перейду и включу в другие проекты в качестве зависимости. Проблема, с которой я сталкиваюсь, заключается в том, что, когда он объединяет POM с этими зависимостями, он появляется, когда я объявляю зависимости области видимости, при условии, что они не включены.
Можно ли включить предоставленные зависимости в POM зависимостей с областью действия ? Я часто объявляю, какие API мне нужны, и затем включаю реализацию как зависимость времени выполнения.
Если предоставляется зависимость, почему ее нельзя наследовать с той же областью действия, чтобы мне не нужно было ее объявлять?
Он является унаследованным с тем же объемом. Учитывая следующий родительский 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
?