我正在尝试在运行我们的 Maven 单元测试时添加 JVM 类路径参数,方法是添加以下 maven 参数,并将"dir"替换为我想要的 clasaspath。
MAVEN_OPTS = -cp "目录">
然后正确地将其添加到 Java 参数中
然而,我的"目录"从未正确添加到类路径中。 类路径中从未找到所需的文件,并且在打印出类路径时使用
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
在运行测试时,Maven 运行的 JVM 和正在使用的 JVM 之间存在差异。
万无一失的插件将生成自己的 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>
更多细节在这里。
如果你想通过命令行参数动态更改万无一失的 JVM 使用的类路径(正如你提到的MAVEN_OPTS所暗示的那样(,那么你可以定义一个这样的additionalClasspathElement
......
<additionalClasspathElement>${additionalClasspathDir}</additionalClasspathElement>
。然后像这样调用 Maven:
mvn test -DadditionalClasspathDir=path/to/your/additional/directory