获取Maven surefire以在存在module-info.java文件的类路径上运行

时间:2018-11-05 20:26:22

标签: java maven maven-surefire-plugin

我试图编写一个可以在模块路径上运行的库,而没有麻烦,但是我正在使用org.testcontainers包进行测试,并且它们具有许多无法使用的依赖项模块路径。

这些是我在module-info.java存在的情况下尝试运行surefire时遇到的错误:

  

[警告]无法从visible-assertions-2.1.1.jar中提取模块名称:   在顶级目录中找到TtyCheck.class(未命名包)   允许在模块中使用)[警告]无法从中提取模块名称   native-lib-loader-2.0.2.jar:native.lib.loader:无效的模块名称:   “ native”不是Java标识符[警告]无法提取模块名称   来自junixsocket-native-common-2.0.4.jar:junixsocket.native.common:   无效的模块名称:“ native”不是Java标识符

这导致找不到类的其他问题。

请注意,这是一个运行时问题,代码可以毫无问题地编译,并且生成的jar可以正常工作。

据我了解的surefire文档,如果存在module-info.java文件,它将尝试在模块路径上运行测试。

是否有任何方法可以禁用此行为并防止maven surefire在类路径而不是模块路径上运行测试?

1 个答案:

答案 0 :(得分:0)

我通过添加以下内容解决了此问题:

    <configuration>
      <forkCount>0</forkCount>
    </configuration>

在maven-surefire-plugin插件部分,它给了我警告[WARNING] useSystemClassloader setting has no effect when not forking