The main Groovy 1.1-beta-3 feature

Рубрика: Development, Groovy, Java | 10 October 2007, 19:29 | Vadim Voituk

В прошлом обзоре новых возможностей Groovy 1.1-beta-3 упустил очень значительное дополнение в groovyc ant task, позволяющее решить “проблему курицы и яйца”.

Суть проблемы возникала в том, что если в проекте есть циклические зависимости между Groovy-кодом и Java-кодом, то не ясно в какой последовательности компилировать классы. Например Java-класс зависит от Groovy-класса, который в свою очередь зависит от Java-класса.
Аналогичные зависимости могут возникнуть и в “одноязычном” проекте.
В случае правильного проектирования такого зацикливания быть не должно, и знающие люди даже называют это “душком большого числа связей”, но на практике они регулярно возникают.

В случае одного компилятора (например javac) он берет на себя разрешение зависимостей и определение порядка компилирования классов. Иначе же эта задача ложится на плечи того, кто пишет сценарий сборки.

В Groovy решение этой проблемы откладывали достаточно долго, и только в версии 1.1-beta-3 в groovyс ant task добавили возможность вызывать Java-компилятор, если нужный Java-класс ещё не скомпилирован.

Выглядит это таким образом (пример из build.xml) :

[xml]<groovyc
  srcdir="${src.dir}"
  destdir="${dst.dir}"
  classpathref="project.class.path">
    <javac
      srcdir="${src.dir}"
      destdir="${dst.dir}"
      classpathref="project.class.path"
    />
</groovyc>[/xml]

Оставьте комментарий!

Leave a Reply