我在父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)。
我原以为,因为依赖项具有“测试”范围,因此它不应该打包它的任何传递依赖项。我的假设不正确吗?
答案 0 :(得分:3)
您的假设不正确。由于您提供了范围test
,因此该jar将在测试和执行阶段出现。
范围应该是provided
。范围provided
将使jar在编译和测试类路径上可用,并且不可传递。
有关详细信息,请参阅http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html dependency scope section。