1 回答
TA贡献1816条经验 获得超6个赞
您的项目pom的父级为:net.imagej:pom-imagej:13.2.0,其父级为org.scijava:pom-scijava:8.4.0,其中包含以下与 Java 版本相关的摘录:
<scijava.jvm.version>1.6</scijava.jvm.version>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<!-- Require the Java 6 platform. -->
<configuration>
<source>${scijava.jvm.version}</source>
<target>${scijava.jvm.version}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
...
<enforceBytecodeVersion>
<maxJdkVersion>${scijava.jvm.version}</maxJdkVersion>
...
</enforceBytecodeVersion>
</plugin>
因此,执行者规则及其对 Java 1.6 的坚持是通过您项目的出身继承的。
这种对 Java 1.6 的限制与编译为 Java 1.8 的 JUnit5 库冲突。
您也许可以在您自己的 POM 中覆盖执行器插件(请参阅Maven 文档combine.self="override"中的参考),但是您模块的祖父 ( org.scijava:pom-scijava:8.4.0) 明确声明它希望在 Java 1.6 上运行这一事实强烈表明任何此类覆盖都会导致问题。
我认为更明智的课程将是以下之一:
从 Junit5 降级到与 Java 1.6 兼容的 Junit4 版本
将您的父 ( net.imagej:pom-imagej:13.2.0)版本升级到与 Java 8 兼容的版本,注意:它net.imagej:pom-imagej:13.2.0已经 3 岁了,因此您可能会发现升级到最新版本会使此问题消失。
添加回答
举报