亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 Maven 執行器會限制為 Java 1.6?

為什么 Maven 執行器會限制為 Java 1.6?

慕無忌1623718 2021-10-20 14:57:39
mvn test在我的項目上運行時,出現 JDK 版本錯誤。這是輸出:[INFO] Scanning for projects...[INFO] [INFO] -----------------------< net.rorynolan:Detrendr >-----------------------[INFO] Building Detrendr 0.0.0.9003-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------[INFO] [INFO] --- maven-enforcer-plugin:1.3.1:enforce (enforce-rules) @ Detrendr ---[INFO] Adding ignorable dependency: null:jcodings:null[INFO]   Adding ignore: org/jcodings/*[INFO] Adding ignorable dependency: null:jnr-constants:null[INFO]   Adding ignore: com/kenai/constantine/*...[INFO] Adding ignorable dependency: com.sun:tools:null[INFO]   Adding ignore: *[INFO] Restricted to JDK 1.6 yet org.junit.platform:junit-platform-commons:jar:1.3.1:test contains org/junit/platform/commons/JUnitException.class targeted to JDK 1.8[INFO] Restricted to JDK 1.6 yet org.junit.jupiter:junit-jupiter-api:jar:5.3.1:test contains org/junit/jupiter/api/AssertArrayEquals.class targeted to JDK 1.8[INFO] Restricted to JDK 1.6 yet org.junit.jupiter:junit-jupiter-engine:jar:5.3.1:test contains org/junit/jupiter/engine/Constants.class targeted to JDK 1.8[INFO] Restricted to JDK 1.6 yet org.junit.platform:junit-platform-engine:jar:1.3.1:test contains org/junit/platform/engine/TestDescriptor.class targeted to JDK 1.8[WARNING] Rule 5: org.apache.maven.plugins.enforcer.EnforceBytecodeVersion failed with message:Found Banned Dependency: org.junit.platform:junit-platform-commons:jar:1.3.1Found Banned Dependency: org.junit.jupiter:junit-jupiter-api:jar:5.3.1Found Banned Dependency: org.junit.jupiter:junit-jupiter-engine:jar:5.3.1Found Banned Dependency: org.junit.platform:junit-platform-engine:jar:1.3.1Use 'mvn dependency:tree' to locate the source of the banned dependencies.[INFO] ------------------------------------------------------------------------...但這就是我所擁有的。我嘗試將 maven 執行器插件明確添加到我自己的插件中,pom.xml但無濟于事。
查看完整描述

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 歲了,因此您可能會發現升級到最新版本會使此問題消失。


查看完整回答
反對 回復 2021-10-20
  • 1 回答
  • 0 關注
  • 243 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號