Как настроить ленивую или инкрементную сборку вообще с Ant? - PullRequest
6 голосов
/ 10 июля 2010

Java-компилятор обеспечивает инкрементную сборку, поэтому задача javac ant также. Но большинство других процессов этого не делают.

Учитывая процессы сборки, они преобразуют некоторый набор файлов (источник) в другой набор файлов (цель).

Я могу выделить два случая:

  1. Transformator не может принимать подмножество исходных файлов, только весь набор. Здесь мы можем только сделать отложенную сборку - если файлы из источника не были изменены - мы пропускаем обработку.
  2. Transformator может взять подмножество исходных файлов и получить частичный результат - инкрементная сборка .

Что такое внутренние и сторонние расширения ant или другие инструменты для реализации отложенной и добавочной сборки? Можете ли вы привести примеры распространенных сборочных файлов?

Мне интересно это, в частности, для работы с компилятором GWT.

Ответы [ 2 ]

5 голосов
/ 25 апреля 2012

Задача uptodate является общим решением Ant для этой проблемы.Он достаточно гибок, чтобы работать в большинстве ситуаций, где желательна отложенная или добавочная компиляция.

У меня была та же проблема, что и у вас: у меня в коде есть модуль GWT, и я не хочу платить (дорого!) За его перекомпиляцию, когда мне это не нужно.Решение в моем случае выглядело примерно так:

<uptodate property="gwtCompile.mymodule.notRequired"
  targetfile="www/com.example.MyGwtModule/com.example.MyGwtModule.nocache.js">
    <srcfiles dir="src" includes="**"/>
</uptodate>

<target name="compile-mymodule-gwt" unless="gwtCompile.mymodule.notRequired">
    <compile-gwt-module module="com.example.MyGwtModule"/>
</target>
1 голос
/ 11 июля 2010

Относительно GWT, невозможно делать инкрементные сборки, потому что компилятор GWT просматривает весь исходный код сразу, оптимизирует и встраивает код.Это означает, что код, который не был изменен, может оцениваться по-разному, например, если вы начнете использовать метод из класса, который не был изменен, метод был на предыдущем шаге компиляции опущен, но теперь его нужно скомпилировать.

...