Maven编译器的源和目标

时间:2018-09-03 15:17:07

标签: java maven maven-plugin

我搜索了所有答案,以了解为什么我们的来源应与目标不同,但来源却不统一:

public function up()
{
    Schema::create('jobs', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->integer('company_id')->unsigned();
        $table->foreign('company_id')->references('id')->on('company');
    });
}

如果JDK向后兼容,为什么在1.7上完成编译时我需要将目标设置为1.8?

将源设置为高于目标将不起作用,错误示例:

源版本8需要目标版本1.8

也来自Maven:

  

仅设置目标选项并不能保证您的代码   实际上在具有指定版本的JRE上运行。陷阱是   意外使用仅在以后的JRE中存在的API   使您的代码在运行时因链接错误而失败

任何人都可以举例吗? maven源代码和目标代码是我自己的源代码,而不是依赖项,那么在以后的JRE(以我自己的代码)中可以成功使用API​​的情况是什么?

1 个答案:

答案 0 :(得分:0)

通常,将目标JVM设置为与源JVM匹配,否则。如果未设置目标JVM,则Java编译器的版本会将其设置为该JVM版本,例如如果使用Java 10进行构建,则除非您将目标JVM指定为更低版本,否则目标类文件将仅在Java 10下运行。

我想在您的企业针对目标JVM(例如Java 8 b / c或出于安全性和/或性能原因)的情况下,该目标高于您希望与源Java兼容的目标JVM(例如Java) 7),然后将目标版本设置为高于源版本。也许您可以将此代码库“共享”给仍可能以Java 7 JVM为目标的其他人。