当前位置: 首页 > 知识库问答 >
问题:

“maven.compiler.release”作为源和目标的替换?

欧阳乐生
2023-03-14

关于maven.compiler.release-标记,我有两个问题

我想替换

<properties>
    <maven.compiler.source>12</maven.compiler.source>
    <maven.compiler.target>12</maven.compiler.target>
</properties>
<properties>
     <maven.compiler.release>12</maven.compiler.release>
</properties>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <!-- do I need that ? -->
        <release>12</release>
    </configuration>
</plugin>

根据https://www.baeldung.com/maven-java-version,它被设置为两者。

如果我使用maven.compiler.release而不是maven.compiler.sourcemaven.compiler.target,那么也会设置-bootclasspath并将执行交叉编译。这是什么意思?set-bootclasspath的编译文件大小会更大吗?还是编译需要更多的时间?

共有1个答案

齐文林
2023-03-14

只要属性 12 就足够了。而且您也不需要设置maven-compiler-plugin的配置。释放标签的配置将自动拾取。bootclasspath部分是通过使用--release选项自动完成的。文件的大小与此无关...

所以简单的建议是使用releasepart for JDK9+否则使用源/目标...

 类似资料:
  • 我已经看到了JDK发行版可以运行`javac-source1.6-target1.5`的编译选项。我理解来源和目标的单独选项。我不明白为什么源版本比目标版本高。为旧目标编译代码是有意义的。但是在这种情况下,为什么我们不使用我们希望能够运行的最古老目标的-source

  • 我已经搜索了所有关于为什么我们应该有不同于目标的来源,但不一致的答案: 如果JDK向下兼容,为什么在1.7上编译时需要将目标设置为1.8? 将源设置为高于目标将不起作用,例如错误: 源版本8需要目标版本1.8 同样来自Maven: 仅仅设置target选项并不能保证代码在具有指定版本的JRE上实际运行。陷阱在于无意中使用了只存在于后来的JRE中的API,这会导致代码在运行时出现链接错误 有人能举个

  • #include <stdio.h> #include <time.h> int main(void) { time_t now = time(NULL); struct tm local = {0}; struct tm gmt = {0}; localtime_r(&now, &local); gmtime_r

  • 我正在从ModelMapper到MapStruct的转换过程中,到目前为止一切都很顺利,除了在列表上排序和筛选的情况,如果我有一个从域对象到实体的映射,例如: 从一个api中,我想在contactAddressLine1上进行过滤或排序,然后我想查找源代码(或反向映射时的目标代码),以便将其添加到动态jpq或sql查询中。 有没有办法用MapSTRt做到这一点? 使用ModelMapper,我可以

  • 问题内容: 我有以下MySQL查询,我要检查,如果 分支ID 和 年度 的 财务 从类型 branch_master 与平等的 分支ID 和 年 的 经理 ,然后更新状态在 管理 表中对 分公司的ID 在 经理 但出现错误 表’m1’被指定两次,既作为’UPDATE’的目标,又作为数据的单独源 问题答案: 这是典型的MySQL问题,通常可以通过从派生表中进行选择来规避,例如 采用 完整的声明:

  • 我有下面的查询在mysql中,我想检查如果分支id和年的财务类型从branch_master是等于分支id和年的经理然后更新状态在经理表对分支id在经理 但是犯了错误 表“m1”被指定了两次,既作为“更新”的目标,也作为单独的数据源