2016-12-21 10 views
1

私はmaven 3.3.3を使用しています。私は<fork>true</fork>です。私は、問題(MojoException)に走ったと私のプロジェクトは、Java 1.6を使用していたし、上記の行でのjava.versionは1.6を参照していますが、私のコンピュータの環境変数<fork>とは何ですか</fork>は、mavenを使用しているときにpom.xmlにあることを意味しますか?

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

をコメントアウトすることによってそれを固定1.7とMaven 3.3.3ニーズましたJava 1.7。今、私の問題は修正されました。

しかし、私は理解できません 1)ここでフォークは何を意味していますか? 2)どうしますか? 3)それを真または偽に設定したら、それは何を変更するのですか?

私はドキュメントを読んだが、それに従うのは難しい。ありがとう。

+4

http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#fork – StackFlowed

+1

@StackFlowed http:/ /のMaven Compiler Pluginのドキュメントから、そのページにアクセスする方法を教えてください。 /maven.apache.org/plugins/maven-compiler-plugin/index.html? –

+2

@DavidTonhoferこれはプラグインのサイトでは常に同じです。メニューの「目標」をクリックして、実際の目標( 'compiler:compile')を選択してください。 – eckes

答えて

2

trueは、新しいJVMを作成(フォーク)してコンパイラを実行することを意味します。これは少し遅くなりますが、分離が良いです。

特に、Mavenが起動しているJVMとは異なるJVMを指定することができます。また、この場合にのみコマンドラインパラメータ(for increasing Heapsize or Metaspace)を指定することもできます。あなたのケースでは、間違ったJVMを使用しているように見えるので問題が生じます。full path with <executable>またはtoolchain configurationを指定できます。

これは、Java 1.6では動作しないが、古いソース/ターゲットバージョンに対してクリーンなコンパイル環境を使用する最新のMavenを使用する1つの方法です。

falseは、mavenを実行したJVMでコンパイラを直接起動することを意味します。これにより、ビルドの再現性が低下します。

+0

私の場合、プロジェクト(つまり、pom.xml java.versionは1.6に設定されています)から、mavenは3.3.3です。 fork = trueを設定すると、新しいjvm 7が起動し、1.6のコードが実行されます。私は正しい? – user3705478

+0

ツールチェインやの設定を使わないと、PATHで最初に見つかったJava実行ファイルが起動すると思います。 – eckes

+0

はい、私のpom.xmlにもがあります。それは1.6 – user3705478

関連する問題