我有以下设置:
Master
:包含模块A
和B
A
:声明对B
的依赖关系,Master
为其父B
:Master
作为其父所以基本上Master
有一个父pom,它构建A
和B
A
依赖于B
。
我的问题是我想将所有第三方依赖项放在B
(像JUnit等等)。但是当我这样做时,A
确实可以访问B
声明的依赖项。为什么会这样?我以为maven处理传递依赖。
以下是我的poms的片段:
站长:
<modules>
<module>../A</module>
<module>../B</module>
</modules>
A:
<parent>
<groupId>com.project</groupId>
<artifactId>Master</artifactId>
<version>1</version>
<relativePath>../Master/pom.xml</relativePath>
</parent>
...
<dependency>
...
<artifactId>B</artifactId>
...
</dependency>
B:
<parent>
<groupId>com.project</groupId>
<artifactId>Master</artifactId>
<version>1</version>
<relativePath>../Master/pom.xml</relativePath>
</parent>
...
<dependency>
...
<artifactId>JUnit</artifactId>
...
</dependency>
为什么A
无法访问JUnit?
答案 0 :(得分:2)
如果项目B中的JUnit依赖项具有范围“test”,那么我不相信它将作为项目A中的传递依赖项可见。请参阅Maven Introduction to the Dependency Mechanism: Dependency Scope中的表。