2013-06-17 3 views
2

В настоящее время я работаю над проектом, который часто предполагает создание проектов Maven, содержащих относительно большое количество подмодулей, например. 10-15. У нас есть куча плагин включены для всех проектов, таких как животные наркоман, JavaDoc и т.д. Для развития для того, чтобы ускорить вещи немного я обычно использую следующие свойства локально деактивировать некоторые шаги:Трюки для ускорения сборки реактора maven

mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Danimal.sniffer.skip=true 

Моих вопрос в том, есть ли другие трюки, которые можно использовать для ускорения типичного процесса сборки Maven.

ответ

6

Вы можете использовать -Dmaven.test.skip, чтобы избежать компиляции тестов и использовать -T для параллельной сборки модулей. Учтите, что многие плагины не являются потокобезопасными, и вы можете столкнуться с проблемами параллелизма, что означает, что ваша сборка может завершиться неудачей. Если вы используете Дженкинс в качестве инструмента CI, вы можете настроить работу Maven таким образом, что он строит

  1. модулей Maven параллельно, а
  2. только те модули Maven, которые пострадали от последнего изменения SCM.
+0

Спасибо, в моем случае, если параллельные сборки сократили общее время сборки примерно на 10%. '-Dmaven.test.skip' не всегда работает. В моем случае один из модулей полагается на тестовый путь к классам, поэтому мне пришлось использовать '-DskipTests' – ejboy

+0

Если один из ваших модулей использует тестовый путь класса, у вас могут возникнуть проблемы при создании выпуска или когда вы хотите использовать выпущенный артефакты, не так ли? –

+0

Я думаю, что если используется зависимость [test-jar dependency] (http://stackoverflow.com/questions/174560/sharing-test-code-in-maven#174670), -Dmaven.test.skip не удастся, но это не следует останавливать выпуск, предполагая, что тестовая фаза не пропускается. У нас была эта проблема в одном из наших проектов, но с недавнего ствола зависимость тестовой банки больше не используется, поэтому -Dmaven.test.skip также работал для меня. – ejboy