2016-04-18 3 views
1

Я использую rpm-maven-plugin, чтобы создать RPM, который устанавливает мой проект java. Мне нужно создать RPM для CentOS 5 и CentOS 7. Я уже использую профили для установки свойств, содержащих имена некоторых зависимостей RPM, которые отличаются друг от друга, а затем ссылаются на эти свойства в плагине rpm.Должен ли я дублировать конфигурацию плагина в профилях Maven?

Теперь мне нужно также изменить файлы, которые RPM ставит на место на основе профилей cent5 vs cent7 (в процентах 5 по-прежнему используются скрипты инициализации, в процентах 7 отправлено файлы единиц с помощью systemd). Я не могу придумать простой способ сделать это, установив свойства, мне нужно включить в них разные сопоставления файлов. Нужно ли дублировать мою (длинную) конфигурацию плагина RPM в двух профилях, чтобы получить изменения? Это кажется опасным, потому что конфигурация плагина длинная, и дублирование неизбежно приведет к тому, что разработчики вносят будущие изменения в один и пропускают другой. Есть ли способ добавить к плагину конфигурацию с профилем?

Каков наилучший способ управления небольшим изменением сложной конфигурации плагина в профилях maven?

+0

Как насчет использования [агрегации Maven [с субмодулями]] (https://maven.apache.org/pom.html#Inheritance_v) ** и ** [наследование (с родительским ПОМ)] (http: //books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html#pom-relationships-sect-multi-vs-inherit). См., Например, [Maven и профили: ...] (http://stackoverflow.com/a/33291639/1744774). –

+1

Прочитав эти ссылки, я считаю, что я убежден, что я попадаю в ловушку, пытаясь использовать профили для всего, вместо того, чтобы использовать стратегии, которые разбиваются на несколько POM. Я думаю, что механизм наследования даст мне то, что мне нужно. Общие шаги сборки в одном, унаследованные еще двумя POM, специфичными для целевых ОС. У меня будет плагин RPM, определенный как с незначительными изменениями, так и с покупкой мне масштабируемого решения, когда неизбежно возникнут другие различия. Если вы разместите это как ответ, я соглашусь с ним. – tdimmig

ответ

0

Использование в Maven aggregation (with sub-modules):

наследования и агрегации создают хороший динамический для контроля строится с помощью единого высокого уровня РОМ. Вы часто увидите проекты, которые являются родителями и агрегаторами.

иinheritance (with a parent POM):

Родитель проект один, который передает свои ценности своим детям. Многомодульный проект просто управляет группой других подпроектов или модулей.

См. Также answer to Maven and Profiles: ....

 Смежные вопросы

  • Нет связанных вопросов^_^