Maven传递依赖问题

时间:2010-12-05 22:07:43

标签: java maven-2 java-ee

我有以下设置:

  • Master:包含模块AB
  • A:声明对B的依赖关系,Master为其父
  • BMaster作为其父

所以基本上Master有一个父pom,它构建AB 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?

1 个答案:

答案 0 :(得分:2)

如果项目B中的JUnit依赖项具有范围“test”,那么我不相信它将作为项目A中的传递依赖项可见。请参阅Maven Introduction to the Dependency Mechanism: Dependency Scope中的表。