Разница между Maven источником плагина и jar-не-fork цель?

Не могли бы вы дать мне подробное объяснение разницы между jar и jar-no-fork целью?

Я вижу это с официального сайта, но я не могу получить четкое представление об этом.

Ответы

Ответ 1

Моя интерпретация: цель jar предназначена для запуска из командной строки (mvn source:jar), jar-no-fork предназначена для привязки к жизненному циклу.

Если вы посмотрите на docs для цели jar, ключевая фраза: "Вызывает выполнение фазовых источников генерации жизненного цикла до выполнения самой себя". Если вы настроите POM для запуска цели source:jar как часть жизненного цикла, Maven будет повторно запускать все цели, привязанные к generate-sources и ее предшественникам. Если у вас есть много плагинов, связанных с этапами проверки или инициализации, все они будут выполняться дважды, увеличивая время сборки.

Напротив, jar-no-fork - это то, что вы присоединяете к жизненному циклу сборки, потому что оно ожидает привязки к фазе где-то после generate-sources и не будет снова запускать связанные цели.

Я проверил это поведение, запустив Maven 3 с помощью -X и просмотрев выполняемые плагины.