打印出的类路径有运行测试时使用的Maven和JVM上运行一个JVM之间的差异时,总是丢失。
surefire插件将产生自己的JVM来运行你的测试用例。默认情况下,将包括以下对JVM的类路径:
- 你的项目的类目录
- 你的项目的测试类目录
- 你的项目的依赖。
如果我已经正确地理解了您的问题,那么您希望将另一个目录添加到运行您的测试的JVM的类路径中。如果是这样,那么你可以添加额外的类路径条目就像这样:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>path/to/your/additional/directory</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
更多细节here。
如果要动态地改变通过命令行参数使用的万无一失JVM类路径(如您的MAVEN_OPTS提及暗示),那么你可以定义一个additionalClasspathElement
这样的...
<additionalClasspathElement>${additionalClasspathDir}</additionalClasspathElement>
..然后像这样调用Maven:
mvn test -DadditionalClasspathDir=path/to/your/additional/directory
是否有任何方法将变量添加到这些路径中,形式如果maven操作?我们宁愿在我们的pom文件中没有硬编码路径 – Johng
我已经更新了我的答案,以解决动态更改surefire插件使用的类路径的要求。 surefire插件明确了它如何编写它的类路径,以及如果你想要的目录不在项目的类路径中,并且不能添加到它(使用[Maven Build Helper Plugin](http://www.mojohaus.org/build) -helper-maven-plugin /)例子),那么使用'additionalClasspathElements'是你唯一的选择。 – glytching
工作,只需要将-D前缀添加到变量 – Johng