среда, 17 марта 2010 г.

Maven для Erlang

Maven 2 - это система сборки изначально ориентированная на Java приложения.
Однако благодаря системе плагинов Maven способен работать с любым языком и на любой платформе (где запустится Java). Именно это делает Maven весьма интересным кандидатом на роль основной системы сборки при старте мультиязычного проекта или нескольких связанных проектов на разных языка программирования.
К достоинствам Maven так же можно понятие репозитария артефактов - хранилища в котором можно разместить что угодно. Все что доступно в хранилище, легко подключается к проекту.
К тому же для многих Continuous Integration серверов уже есть готовые плагины/расширения для взаимодействия с Maven.
Подробности установки Maven доступны на официальном сайте - здесь.

А краткая инструкция выглядит так:
  1. Установить JDK
  2. Скачать и распаковать архив Maven
  3. Создать или обновить системные переменные так, чтобы JAVA_HOME указывал на JDK и PATH включал в себя путь к директории /bin распакованного Maven.


Nexus - это одна из реализаций хранилища артефактов. Nexus доступен в двух версиях - Open Source и Professional. Подробное сравнение этих версий доступно здесь. Впрочем даже Nexus Open Source способен проксировать удаленные и хостить местные хранилища.
Подробности установки и настройки Nexus превосходно описаны в Nexus Book.

Краткая инструкция для Nexus Open Source:
  1. Установить Tomcat
  2. Скачать последнюю версию Nexus в виде war
  3. Переименовать nexus-webapp-x.x.x.war в nexus.war
  4. Задеплоить nexus.war используя менеджер Tomcat

После этого необходимо настроить Maven на его использование. Это делается добавлением в ~/.m2/settings.xml следующих строк:





nexus
*
http://beast-server/nexus/content/groups/public




nexus




central
http://central
true
true




central
http://central
true
true






nexus



releases
deployment
deployment123


snapshots
deployment
deployment123




Более подробно это описано в Nexus Book.

Теперь можно приступить к Erlang. Для взаимодействия с Erlang у Maven есть плагин - Erlang Maven Plugin
Его нет в публичных хранилищах, так что надо будет собрать его из исходников:

$ svn co https://maven-erlang.svn.sourceforge.net/svnroot/maven-erlang maven-erlang

Чтобы не повторять эти операции на каждом хосте который будет использовать этот плагин, его необходимо задеплоить в хранилище. Для этого необходимо добавить в pom.xml информацию о нашем хранилище в секцию distributionManagement:

$ cd ./maven-erlang/maven-erlang/trunk/
$ vim ./pom.xml



releases
http://beast-server/nexus/content/repositories/releases


snapshots
http://beast-server/nexus/content/repositories/snapshots


Теперь необходимо запустить

$ mvn deploy -Dmaven.test.skip=true

-Dmaven.test.skip=true необходим поскольку некоторые юнит тесты не проходят с последними версиями Erlang. В качестве альтернативы можно прописать версии kernel, stdlib и mnesia из вашего екземпляра Erlang в erlang-plugin/trunk/src/test/resources/mojo-test-release-1/src/main/erlang/release_name.rel и использовать

$ mvn deploy


Итог:
  • Установлен Maven
  • Развернуто хранилище артефактов
  • В хранилище добавлен Erlang Maven Plugin

Комментариев нет: