我试图编写一个可以在模块路径上运行的库,而没有麻烦,但是我正在使用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在类路径而不是模块路径上运行测试?
答案 0 :(得分:0)
我通过添加以下内容解决了此问题:
<configuration>
<forkCount>0</forkCount>
</configuration>
在maven-surefire-plugin插件部分,它给了我警告[WARNING] useSystemClassloader setting has no effect when not forking
。