java - 让 maven surefire 在存在 module-info.java 文件的类路径上运行
问题描述
我正在尝试编写一个可以在模块路径上毫无问题地运行的库,但是我正在使用该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 在类路径而不是模块路径上运行测试?
解决方案
我通过添加解决了这个问题:
<configuration>
<forkCount>0</forkCount>
</configuration>
到 maven-surefire-plugin 插件部分,这给了我警告[WARNING] useSystemClassloader setting has no effect when not forking
。
推荐阅读
- amazon-web-services - AWS EC2:为什么 cloud-init 忽略我的脚本?
- python-3.x - 如何处理“ModuleNotFoundError: No module named 'setup'”
- julia - 为什么在 Julia 中使用宏?
- apache-flink - 为什么table api中的flink kafka源无法合并?
- r - 绘制 strobiloid
- time - 获取累积风险值
- flexslider - FlexSlider 箭头工作但不可见
- docker - nginx 无法将请求转发到在不同容器中运行的服务
- python - 更准确的曲线拟合
- python - 如何获取熊猫中列的频率计数?