【问题标题】:What does <fork>true</fork> means in pom.xml while using maven?<fork>true</fork> 在使用 maven 时在 pom.xml 中是什么意思?
【发布时间】:2017-05-07 07:47:44
【问题描述】:

我正在使用 Maven 3.3.3。我有&lt;fork&gt;true&lt;/fork&gt;。我遇到了问题(MojoException)并通过注释掉来修复它

 <fork>true</fork>
 <compilerVersion>${java.version}</compilerVersion>

我的项目使用的是 Java 1.6,上面一行中的 java.version 指的是 1.6,但是我的计算机环境变量是 1.7 并且 maven 3.3.3 需要 Java 1.7 。现在我的问题已经解决了。

但我无法理解 1)叉子在这里是什么意思? 2)它有什么作用? 3) 将其设置为 true 或 false,会发生什么变化?

我浏览了文档,但很难理解。谢谢。

【问题讨论】:

标签: java maven pom.xml


【解决方案1】:

true 表示它将创建(fork)一个新的 JVM 来运行编译器。这有点慢,但隔离更好。

特别是您可以指定一个不同于启动 Maven 的 JVM,并且您也可以仅在这种情况下指定命令行参数 (for increasing Heapsize or Metaspace)。在您的情况下,它会导致问题,因为它似乎使用了错误的 JVM,您可以指定 full path with &lt;executable&gt;toolchain configuration

这是使用现代 Maven 的一种方法,该 Maven 不与 Java 1.6 一起运行,但仍为旧的源/目标版本使用干净的编译环境。

false 表示它直接在您运行 maven 的 JVM 中启动编译器,这会降低构建的可重复性。

【讨论】:

  • 所以在我的情况下,因为我的项目(即在 pom.xml 中 java.version 设置为 1.6),但 maven 是 3.3.3。并设置 fork=true,启动一个新的 jvm 7 并尝试在其中执行 1.6 代码。我说的对吗?
  • 如果您不使用工具链或 设置,我认为它会首先启动它在 PATH 上找到的任何 Java 可执行文件。
  • 是的,我的 pom.xml 中也有一个 ,它指的是 1.6
  • 哇,真是巧合。我只是在寻找一种方法让 IntelliJ 构建我的 Java 6 maven 项目,同时使用 Maven 3.3.9。会试试的。
猜你喜欢
  • 2018-06-16
  • 2023-03-06
  • 1970-01-01
  • 2021-11-18
  • 2011-02-24
  • 1970-01-01
  • 2021-09-10
  • 2021-04-18
  • 1970-01-01
相关资源
最近更新 更多