动态设置 Maven Surefire JVM 类路径



我正在尝试在运行我们的 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

最新更新