Поддерживает ли Maven инкрементные сборки? - PullRequest
32 голосов
/ 19 января 2012

Как использовать Maven для поддержки инкрементных сборок?Где-нибудь есть гид?(лучшие результаты Google разочаровывают)

Ответы [ 5 ]

9 голосов
/ 23 декабря 2016

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

Во всяком случае, покопавшись, я нашел ответ, который работал для меня здесь: http://www.codesenior.com/en/tutorial/Java-Maven-Compile-Only-Changed-Files

Обратите внимание, что установка значения false сначала смутила меня, но здесь дано объяснение: https://stackoverflow.com/a/19653164/409638

Воспроизводится здесь для удобства:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <useIncrementalCompilation>false</useIncrementalCompilation>
    </configuration>
</plugin>

Это useIncrementalCompilation, установленный на false, который здесь является ключевым.

Я могу подтвердить, что когда я запускаю свою сборку, я ушел из:

[INFO] Changes detected - recompiling the module!
[INFO] Compiling 114 source files to /home/vagrant/workspace/splat/target/classes

до

[INFO] Compiling 1 source file to /home/vagrant/workspace/splat/target/classes

, который побрил несколько секунд моей инкрементальной сборки. Теперь все, что мне нужно сделать, это выяснить, как отключить все другие ненужные ошибки, которые замедляют мои циклы редактирования / оценки ...

6 голосов
/ 19 января 2012

Maven строит пошагово по умолчанию, но оказывается, что плагин компилятора (то есть ядро ​​javac) настолько быстр, что сборка заново каждый раз не является узким местом с нормальными размерами кодовой базы, по сравнению с созданием больших сборокзапуск больших тестовых пакетов.(Java, как и большинство языков, компилируется намного быстрее, чем C ++.)

6 голосов
/ 19 января 2012

Вы можете использовать плагин maven-incremental build , если ваш проект имеет сотни модулей.Это экономит много времени.

5 голосов
/ 30 января 2015

Takari Maven Lifecycle

Да, теперь это возможно благодаря takari-lifecycle-plugin .Взгляните на этот пример проекта: maven-incremental-compilation

Пример вывода

[INFO] --- takari-lifecycle-plugin:1.10.2:compile (default-compile) @ maven-incremental-compilation ---
[INFO] Performing incremental build
[INFO] Compiling 2 sources to /home/mariuszs/maven-incremental-compilation/target/classes
[INFO] Compiled 1 out of 2 sources (670 ms)

Дополнительная информация

4 голосов
/ 19 января 2012

Maven поддерживает создание подмножеств мультимодульных проектов с использованием аргументов командной строки -pl, -am и -amd для указания модулей для сборки, а также для построения зависимостей и построения зависимостей соответственно. Он также будет компилировать только измененные исходные файлы в любом модуле (на самом деле это не функция Maven, а функция javac).

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