Maven pom文件继承范围

时间:2014-01-15 00:52:36

标签: java maven

我在父pom中有以下定义:

<dependency>
  <groupId>net.sourceforge.htmlunit</groupId> 
  <artifactId>htmlunit</artifactId> 
  <version>2.11</version> 
  <scope>test</scope>      
</dependency>

然后这在我的孩子pom:

<dependency>
    <groupId>net.sourceforge.htmlunit</groupId>
    <artifactId>htmlunit</artifactId>
</dependency>

我发现当我的WAR文件(我的孩子pom中的打包类型)构建时,来自htmlunit的传递依赖项包含在WEB-INF / lib目录中(特别是commons-codec)。

我原以为,因为依赖项具有“测试”范围,因此它不应该打包它的任何传递依赖项。我的假设不正确吗?

1 个答案:

答案 0 :(得分:3)

您的假设不正确。由于您提供了范围test,因此该jar将在测试和执行阶段出现。

范围应该是provided。范围provided将使jar在编译和测试类路径上可用,并且不可传递。

有关详细信息,请参阅http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html dependency scope section