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]
Tweet
