Теперь я запускаю его снова (...) Maven выполняет модульные тесты и статический анализ кода снова
Потому что это просто то, что ты просишь, чтобы Мейвен сделал.
Когда вы вызываете фазу сборки , Maven будет выполнять не только эту фазу сборки, но также и каждую фазу сборки перед вызванной фазой сборки. Таким образом, ссылаясь:
mvn install
будет запускаться на каждой фазе сборки, предшествующей install
(validate
, compile
, test
, package
и т. Д.), До выполнения install
, а также подключаемых модулей, привязанных к этим фазам.
И хотя Maven поддерживает инкрементную компиляцию исходных кодов Java, другие плагины не настолько умны и будут запущены снова.
Теперь несколько замечаний / предложений:
- какой смысл бегать
install
если ты ничего не менял?
- если вы не хотите запускать статический анализ кода при каждой сборке, используйте специальный профиль.
Многомодульный проект с обширным тестированием и статическим анализом кода. Я запускаю mvn clean install
, затем я изменяю один файл Java в одном модуле. Затем я запускаю mvn install
и ожидаю, что maven протестирует / проанализирует только этот конкретный модуль, который был изменен. К сожалению, он повторно тестирует и повторно анализирует все модули.
Действительно, если вы запустите mvn install
как часть сборки реактора, то запустите mvn install
на всех модулях, а тесты и анализ будут снова выполнены на всех модулях. Возможно, это не то, что вы ожидаете, но это то, что вы получите (AFAIK, плагин статического анализа не знает об изменениях - я не могу объяснить, почему вещи не лучше).
Это занимает так много времени.
Я предлагаю использовать расширенные опции реактора , чтобы построить только подмножество модулей. Эти опции:
-rf, --resume-from
Resume reactor from specified project
-pl, --projects
Build specified reactor projects instead of all projects
-am, --also-make
If project list is specified, also build projects required by the list
-amd, --also-make-dependents
If project list is specified, also build projects that depend on projects on the list
Так что в вашем случае вы можете запустить что-то вроде (при условии, что вы коснулись module-foo
):
mvn -pl module-foo,my-packaged-app install
или, чтобы перестроить все проекты, которые зависят от module-foo
:
mvn -pl module-foo -amd install