как рассчитать (профилировать) maven цели в многомодульном проекте - PullRequest
9 голосов
/ 28 февраля 2011

У нас огромный проект со множеством подмодулей. Полная сборка в настоящее время занимает более 30 минут.

Интересно, как это время распределяется по разным плагинам / целям, например тесты, статический анализ (findbugs, pmd, checkstyle и т.д ...)

Можно ли рассчитать время сборки, чтобы увидеть, где (в обоих измерениях: модули и цели) больше всего времени уходит?

Ответы [ 3 ]

8 голосов
/ 25 января 2014

Расширение maven-buildtime-extension - это плагин maven, который можно использовать для просмотра времени каждой цели:

https://github.com/timgifford/maven-buildtime-extension

4 голосов
/ 21 июня 2011

Если вы запускаете сборку на CI-сервере, например TeamCity или Jenkins (ранее Hudson) , это даст вам метки времени для каждого шага процесса сборки, и вы сможете использовать эти значения, чтобы определить, какие цели / проекты занимают больше всего времени.

Я не думаю, что в maven есть какой-то способ сделать это. На самом деле, в связанном вопросе artbristol есть ссылка на запрос Maven для этой функции . К сожалению, эта проблема не решена, и я не знаю, будет ли она когда-либо добавлена.

Другое потенциальное решение - написать собственный плагин, который предоставит вам эти метаданные сборки.

0 голосов
/ 02 марта 2011

Я не думаю, что есть способ определить время достижения конкретных целей.То, что вы можете сделать, это запустить отдельные цели отдельно, чтобы увидеть, сколько времени они потребуют.Поэтому вместо «установки mvn», которая запускает все ваши тесты, checkstyle и т. Д., Просто выполните «mvn checkstyle: checkstyle», чтобы увидеть, сколько времени это займет для определенного модуля.время хорошо, когда оно выполняется автоматическим сервером (континуум / jenkins / hudson), но когда вы строите локально, иногда лучше иметь возможность просто скомпилировать.Некоторые из вещей, которые вы можете сделать, - иметь цели статического анализа, которые запускаются ТОЛЬКО при передаче определенного параметра или профиля.Другой вариант - запускать их только тогда, когда maven.test.skip = false.

Если вы используете непрерывную сборку, попробуйте выполнять статический анализ только каждые 4 часа или ежедневно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...