在我的 maven 项目中,我使用了 m2e 不喜欢的 test-jar 类型的依赖项,并给出了以下警告。
“不完全支持对具有类型 test-jar 的项目 foo 的依赖。可能会出现类路径和/或部署问题。尝试 Maven->禁用工作区”
为什么会出现这个问题,为什么禁用工作区分辨率会解决这个问题?
test-jar 的问题在 Eclipse 中,请参阅Bug 365419 - Classpath for Integration Test
我已经尝试使用下面的 hack 使这个警告消失,但是它有一个副作用,即无法从 eclipse 运行测试,因为当运行代码没有正确设置时,eclipse 中的测试的类路径。我在这里发帖是希望有人可以改进这个黑客并使其发挥作用。
在 pom 文件中创建配置文件在 eclipse 中是关闭的,但在 eclipse 之外运行 maven 时会自动打开。
<profiles>
<profile>
<id>test-jars</id>
<activation>
<property>
<name>!m2e.version</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>foo</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>bar</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
</profile>
</profiles>
在 eclipse 中定义了 m2e.version 属性,因此 m2e 忽略了 test-jar 依赖项,并且不会生成警告。但是,在命令行上运行 maven 时,配置文件会激活,因为没有 m2e.version 属性,因此警告消失了。