Поддерживает ли Maven инкрементные сборки?

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

Ответ 1

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

Ответ 2

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

Ответ 3

Жизненный цикл Takari Maven

Да, теперь это возможно благодаря 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

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

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

Обратите внимание, что установка значения false сначала меня путала, но здесь дается пояснение: fooobar.com/questions/156032/...

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

<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

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

Ответ 5

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