Maven 2 Maven-依赖项继承-已提供
我使用依赖性POM,然后将其作为依赖性包含到另一个项目中。我遇到的问题是,当它用这些依赖项聚合POM时,当我声明范围的依赖项时,就会出现这种情况,前提是这些依赖项不包括在内 是否可以将提供的依赖项包含在范围为的依赖项POM中?我经常声明我需要什么API,然后将实现作为运行时依赖项包括在内 如果提供了依赖项,为什么不能用相同的范围继承该依赖项,这样我就不必声明它了 它继承了相同的作用域。给定以下父级Maven 2 Maven-依赖项继承-已提供,maven-2,dependency-management,Maven 2,Dependency Management,我使用依赖性POM,然后将其作为依赖性包含到另一个项目中。我遇到的问题是,当它用这些依赖项聚合POM时,当我声明范围的依赖项时,就会出现这种情况,前提是这些依赖项不包括在内 是否可以将提供的依赖项包含在范围为的依赖项POM中?我经常声明我需要什么API,然后将实现作为运行时依赖项包括在内 如果提供了依赖项,为什么不能用相同的范围继承该依赖项,这样我就不必声明它了 它继承了相同的作用域。给定以下父级pom.xml: <project> <modelVersion>4.0
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>
从子级运行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] ------------------------------------------------------------------------
$mvn依赖项:树[INFO]扫描项目。。。
[信息]正在存储库中搜索前缀为“dependency”的插件。
[信息]------------------------------------------------------------------------
[信息]Q3597684号楼-儿童
[信息]任务段:[依赖项:树]
[信息]------------------------------------------------------------------------
[信息][依赖项:树{执行:默认cli}]
[信息]com.stackoverflow.Q3597684:child:war:1.0-SNAPSHOT
[INFO]+-javax.servlet:servlet api:jar:2.5:已提供
[INFO]\-junit:junit:jar:3.8.1:test
[信息]------------------------------------------------------------------------
[信息]构建成功
[信息]------------------------------------------------------------------------
正如预期的那样,提供的servlet api
就在那里
您是否可能(mis)使用了
dependencyManagement
部分?我没有声明我的模块child@Walter这并不重要(我的父pom是聚合pom,因为我使用原型来设置此项目),重要的部分是
元素。您可以使用继承而不使用聚合,这不会改变我的答案。但我会更新它以仅显示继承,避免任何混淆。我不知道它何时发生,但现在提供的不是可传递的,请查看:
$ 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] ------------------------------------------------------------------------