2016-01-17 2 views
2

От documentation:Почему compilerArgs может быть установлен только тогда, когда fork истинно?

Задает аргументы, которые будут переданы в компилятор, если вилка установлена ​​в истинной.

Почему требуется использовать forking для использования пользовательских аргументов?

ответ

2

compilerArgs:

Задает аргументы, которые будут переданы в компилятор, если вилка установлена ​​истина. Пример:

<compilerArgs> 
    <arg>-Xmaxerrs=1000</arg> 
    <arg>-Xlint</arg> 
    <arg>-J-Duser.language=en_us</arg> 
</compilerArgs> 

Эти аргументы имеют смысл только при создании новой виртуальной машины Java, которая является то, что разветвление для. Если вы не используете fork, компилятор работает в той же JVM, что и сам Maven.

+0

Не имеет ли механизма передачи аргументов фактическому модулю, который выполняет компиляцию? –

+0

Это для настройки новой JVM - работающей javac - и не имеет ничего общего с фактической частью компиляции. –

+1

@ ThorbjørnRavnAndersen на самом деле: -Xlint - это опция javac, а не опция JVM. Так что -Xmaxerrs = 1000. И последний может быть установлен как свойство перед запуском компилятора в Maven JVM. –

1

Потому что если fork не установлен в true, процесс компиляции происходит в том же экземпляре JVM, где работает Maven. А аргументы JVM будут такими же, как и аргументы JVM экземпляра Maven. Когда функция forking включена, компиляция выполняется в новом экземпляре JVM, и вы можете установить аргументы этого нового экземпляра.