使用maven时pom.xml中<fork> true </ fork>是什么意思?

sof*_*fs1 3 java pom.xml maven

我正在使用Maven 3.3.3。我有 <fork>true</fork>。我遇到了问题(MojoException)并通过注释掉了它

 <fork>true</fork>
 <compilerVersion>${java.version}</compilerVersion>
Run Code Online (Sandbox Code Playgroud)

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

但是我听不懂1)fork在这里是什么意思?2)它是做什么的?3)将其设置为true或false,会发生什么变化?

我浏览了文档,但是很难遵循。谢谢。

eck*_*kes 5

true意味着它将创建(分叉)新的JVM来运行编译器。这有点慢,但隔离效果更好。

特别是,您可以指定与启动Maven时不同的JVM,并且仅在这种情况下,才能指定命令行参数(用于增加Heapsize或Metaspace)。如果您使用的是错误的JVM,则可能会导致问题,您可以使用<executable>工具链配置来指定完整路径

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

false 意味着直接在运行maven的JVM中启动编译器,这会使生成的可重复性降低。

  • 哇,真是巧合。我只是在寻找一种方法让 IntelliJ 构建我的 Java 6 maven 项目,同时使用 Maven 3.3.9。要试试那个。 (2认同)