繁体   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