簡體   English   中英

Maven編譯器的源和目標

[英]Maven compiler source and target

我搜索了所有答案,以了解為什么我們的來源應與目標不同,但非在召集:

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

如果JDK向后兼容,為什么在1.7上完成編譯時我需要將目標設置為1.8?

將源設置為高於目標將不起作用,例如以下錯誤:

源版本8需要目標版本1.8

同樣來自Maven:

僅設置目標選項不能保證您的代碼實際在具有指定版本的JRE上運行。 陷阱是意外使用僅在以后的JRE中存在的API,這會使您的代碼在運行時由於鏈接錯誤而失敗

誰能舉個例子? maven源代碼和目標代碼是我自己的源代碼,而不是依賴項,那么在以后的JRE(以我自己的代碼)中可以成功使用API​​的情況是什么?

通常,將目標JVM設置為與源JVM匹配,否則。 如果未設置目標JVM,則Java編譯器的版本會將其設置為該JVM版本,例如,如果您使用Java 10進行構建,則除非您將目標JVM指定為目標Java文件,否則目標類文件將僅在Java 10下運行。降低。

我想如果您的企業針對的是目標JVM(例如Java 8 b / c或出於安全和/或性能方面的原因)高於您希望源Java兼容的目標JVM(例如Java 7),那么您可以將目標版本設置為高於源版本。 也許您可以將該代碼庫“共享”給可能仍然針對Java 7 JVM的其他人。

暫無
暫無

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

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