[devel] Сборка и упаковка opennms (используется maven2)

Igor Vlasenko =?iso-8859-1?q?vlasenko_=CE=C1_imath=2Ekiev=2Eua?=
Вт Ноя 27 00:50:49 MSK 2007


On Mon, Nov 26, 2007 at 11:33:07AM +0200, Slava Dubrovskiy wrote:
> На выходных сделал подход к снаряду.
О. хорошо.

> На текущей пакетной базе это
> сделать нельзя, т.к. в репозитарии нет плагинов и pom которые нужны для
> сборки (не хватает очень много, мне кажется %80).

Я бегло просмотрел корневой pom и pom'ы в подпроектах верхнего уровня
экзотики там мало, почти все зависимости уже собраны.

Там проблема, решаемая, скорее не в отсутствии
зависимостей, а в неинформированности maven2.
Я ее опишу далее.
С плагинами несколько по другому, там
плагины с groupId:org.apache.maven.plugins у нас в основном должны быть,
а плагины с groupId:org.codehaus.mojo я просто еще не выложил в сизиф,
там целый букет плагинов
mojo-maven2-plugin-axistools, ...-build-helper, ...-castor, ...-changes,
...-clirr, ...-cobertura, ...-commons-attributes, ...-dependency,
...-exec,
...-fit, ...-idlj, ...-javacc, ...-javancss, ...-jdepend, ...-jdiff,
...-jpox, ...-jspc, ...-jxr, ...-keytool, ...-sql, ...-taglist,
...-xdoclet, ...-xmlbeans, ...-xslt
и мне хотелось собрать все сразу, не выковыривая из сборки отдельные
плагины.
Это достаточно скоро будет.

> Собрал с закачкой из инета после чего локальный репозитарий (папка .m2)
> стал размером в ~250MB.

кстати, листинг find .m2 -type f вышлите, пожалуйста.
очень был бы удобен чтобы одним взглядом увидеть все зависимости.

> Вопрос: Возможно ли чтобы в пакетах maven2 было все что есть в
> репозитариях интернета? Как можно помочь ускорить этот процесс?

Как я говорил, большинство зависимостей уже есть.
Когда-то было проблемой сказать maven2 где они ---
наивный подход к сборке (иногда даже использовался, с maven1)
создать в RPM/BUILD/name папку .m2 и набросать туда,
копируя структуру ~/.m2, симлинки вида
groupid/artifactid-version.jar -> /usr/share/java/real.jar

Проблема была в том, что структура /usr/share/java/
не совпадает со структурой maven-репозитория.

Чтобы преодолеть эту трудность, используется описанный в
maven2-manual в /usr/share/doc/maven2-2.0.4/maven2-jpp-readme.html
следующий прием.
В файле /etc/maven/maven2-depmap.xml
каждому pom сопоставляется real.jar в /usr/share/java/.
Этот файл собирается из кусочков в /etc/maven/fragments/*
при %post/%postun java пакетов.

Другие приемы считаются устаревшими, я о них говорить не буду.

Таким образом, если пакет устанавливает свой pom в /usr/share/maven2/poms,
и свой depmap в /etc/maven/fragments/, то maven2 его найдет при поиске
зависимостей.
Иначе будет ситуация, что пакет установлен, jar в /usr/share/java/ есть,
но maven2 его не видит.

И затруднение в том, что еще не так много пакетов это делает
(носит для своих jar'ов pom'ы и depmap fragments).

Однако и решение достаточно просто. можно сделать пакет для сборочной
среды, который будет устанавливать для maven2 нужные pom и fragments.

Потом можно будет разложить эти pom и fragments по соответствующим
пакетам, и нужда в костыле отпадет.

-- 

Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine




Подробная информация о списке рассылки Devel