簡體   English   中英

IntelliJ 是否不使用 Maven 的<release>對於目標字節碼級別?

[英]Does IntelliJ not utilize Maven's <release> for target byte code level?

我剛剛發現,當僅使用<release>配置 maven-compiler-plugin 時,IntelliJ 的行為非常特殊:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.0</version>
  <configuration>
    <release>14</release>
  </configuration>
</plugin>

因此,在重新加載 Maven 項目后,在“Java 編譯器”首選項中,它顯示目標字節碼級別8而不是預期的14 我猜這是推斷出來的,因為這些模塊還沒有使用任何 Java 14 功能。

查看首選項截圖: https : //imgur.com/a/uKfwbfF

相比之下,當添加<source><target> ,IDE 會正確配置自己的配置。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.0</version>
  <configuration>
    <source>14</source>
    <target>14</target>
  </configuration>
</plugin>

查看首選項截圖: https : //imgur.com/a/uKfwbfF

據我了解, javac --release選項比僅定義-source-target稍微更可靠,因為它還將-bootclasspath選項設置為正確的級別(使用此 SO post進行雙重檢查)。 所以在我看來,完全依賴這個選項是更好的做法。

為了讓 IntelliJ 在不聲明舊參數的情況下正確設置首選項,我是否還需要執行另一個配置步驟?

我更仔細地調查了這個問題,發現在父 poms 中的某個地方,maven-compiler-plugin 被添加到<pluginManagement> ,而 maven-property 從未為配置設置。

這似乎導致 IntelliJ 通過語言級別進行推斷,即使我覆蓋了 child-pom 中的插件配置。

我想這是可以接受的行為,因為如果父 pom 有問題,IntelliJ 不應該太努力地自己找出東西來引起更多混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM