Ответ 1
Моя интерпретация: цель jar
предназначена для запуска из командной строки (mvn source:jar
), jar-no-fork
предназначена для привязки к жизненному циклу.
Если вы посмотрите на docs для цели jar
, ключевая фраза: "Вызывает выполнение фазовых источников генерации жизненного цикла до выполнения самой себя". Если вы настроите POM для запуска цели source:jar
как часть жизненного цикла, Maven будет повторно запускать все цели, привязанные к generate-sources
и ее предшественникам. Если у вас есть много плагинов, связанных с этапами проверки или инициализации, все они будут выполняться дважды, увеличивая время сборки.
Напротив, jar-no-fork
- это то, что вы присоединяете к жизненному циклу сборки, потому что оно ожидает привязки к фазе где-то после generate-sources
и не будет снова запускать связанные цели.
Я проверил это поведение, запустив Maven 3 с помощью -X
и просмотрев выполняемые плагины.