Переменные Maven не заменяются в установленном pom-файле - PullRequest
2 голосов
/ 28 января 2012

Мы используем Maven (3.0.3) в качестве инструмента для сборки, и нам нужно иметь разные версии для разных сред (DEV, TEST, QA). Если мы передадим значение свойства версии во время сборки на основе среды, установленное POM не будет иметь переданных значений свойства, а останется строкой $ {app-version}.

Я видел уже есть ошибка для этого http://jira.codehaus.org/browse/MNG-2971

Есть ли другая альтернатива, потому что мы не можем различать POM-файл для разных сред, который будет трудно поддерживать ..

Спасибо Виджей

Ответы [ 3 ]

0 голосов
/ 28 января 2012

Очевидно, что Maven не выполняет подстановку переменных / свойств при установке POM.Он установлен как есть, это принцип.Вам лучше не читать какие-либо свойства из POM (если это, например, не номер версии), но вы должны настроить свои свойства во внешнем файле (по одному на этап, например, dev.properties, test.properties, ...), а затем настроить Maven.профили (опять же, по одному на этап) и вызывайте Maven как mvn -Pdev в зависимости от того, что вы хотите построить.В профиле вы можете упаковать ваше окончательное приложение с любыми свойствами, которые вам нравятся (например, с помощью build-helper-maven-plugin:add-resource или maven-antrun-plugin + правило копирования).

В качестве альтернативыВы можете отфильтровать свои ресурсы .Например, вы можете отфильтровать XML-файл контекста Spring, который ссылается на файл свойств (поэтому вы упаковываете все файлы свойств, но Spring ссылается только на некоторые конкретные).Или вы можете отфильтровать другой файл свойств, из которого вы узнаете, что такое «основной» файл свойств (двойное косвенное обращение).

0 голосов
/ 28 января 2012

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

0 голосов
/ 28 января 2012

Создание различных артефактов для сред и использование параметра в качестве классификатора.Pom одинаков для всех трех артефактов, но классификатор разделяет их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...