понедельник, 12 ноября 2012 г.

Scala && Idea Ant command line build

С недавнего времени начал переползать с Java на Scala. Писать под виртуальную машину приходится, но уж больно Java уныла как язык программирования, чудесно совмещая в себе отсутствие плюсовых возможностей в управлении (ссылки, указатели, scoped lifetime, ...) и громоздкой вербозностью.

Что до Scala - то она пока радует. Чему способствует хорошая книжка, а так же полезные ресурсы, например, вот.
И так-же хорошая интеграция в Idea при помощи plugin'ов, позволяя совершенно без проблем совмещать scala & lrgacy java код с первых минут использования.

Единственный `затык`, встреченный на данный момент, оказалась сборка из командной строки. Сама сборка была построена на Scons, в связи с большим объемом кода плюсового, и некоторой генерации. А Java код собирался вызываемым из Scons ant'ом, по сгенерированной идеей 'build.xml'.

Но для Scala, на данный момент, не генерируется необходимых целей сборки, в связи с чем пришлось искать обходные пути.

Ставились требования разработки в Idea и поддержания скрипта сборки в валидном состоянии простыми автоматическими действиями. Были попробованы SBT и Maven, но я не понял, как после генерации ими проектов по простому получить параллельно работающие ветви и в Ide и для command line (а SBT так просто повеселила своим названием, так как она для вхождения вовсе не simple - по прочтению ~ 8 страниц мануала у меня не было четкого понимания, как нужно описывать проекты, их структуру и т.д. .. да банально не мог сходу написать простой рабочий проект где не все по умолчанию).

В результате немного подсмотрев, как по простому собирать ant для сборки scala,  был допилен модификатор Idea'вских ant'овых скриптов, собственно который и решил данную задачу (на данный момент).

Питоновский код (в виде Scons билдера) под 'катом' (python converter for idea ant build xml):