我在Netbeans 7.1 IDE中有一个Maven项目。
我想将相同的依赖项添加到Dependencies
和Test Dependencies
。
添加到其中一个会将其从另一个中删除。
在pom.xml中复制依赖项,并将其包含在其中一个中:
<scope>test</scope>
也不起作用。
救命!
更多详细信息:
假设我有项目MyProject
和MyDependency
。
MyProject
包含MyDependency
作为默认作用域(即compile
作用域)依赖项:
<dependencies>
<dependency>
<groupId>my.group.id</groupId>
<artifactId>AnArtifactId</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
MyProject
包含Source Packages
文件夹(即MyProject/src/main/...
)中的几个类,这些类引用MyDependency
源包中的类。这些工作非常完美;Netbeans没有显示红色错误标志,并且这些类编译成功。
MyProject
在Test Packages
文件夹(即MyProject/src/test/...
)中包含几个类,这些类引用MyDependency
测试包中的类。Netbeans在MyProject
中为这些引用显示红色错误标志。
MyDependency
已使用mvn clean install -DskipTests
清理、构建并存储在本地Maven repo中。对MyProject
运行相同的命令只会导致测试类中的错误;非测试类编译良好。
我发现解决方案是如下复制pom依赖项:
<dependencies>
<dependency>
<groupId>my.group.id</groupId>
<artifactId>AnArtifactId</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>my.group.id</groupId>
<artifactId>AnArtifactId</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
</dependencies>
仅指定<scope>test</scope>
将指示包含MyDependency
的源包的jar应用作MyProject
的测试包的依赖项。
然而,通过指定<type>test-jar</type>
,MyDependency
的测试jar(即包含测试包的jar)被用作MyProject
的测试包的依赖项。
Dependencies
也自动为Test Dependencies
,但不是相反。