Индивидуальные ресурсы генерации / фильтрации с помощью Maven - PullRequest
1 голос
/ 15 мая 2010

Интересно, как в моей ситуации работает Maven.

У моего приложения есть куча файлов конфигурации, давайте назовем их профилями.Каждый файл конфигурации профиля представляет собой файл * .properties, который содержит ключи / значения и некоторые комментарии к семантике этих ключей / значений.Идея состоит в том, чтобы сгенерировать эти * .properties, чтобы во всех них были единые комментарии.Мой план состоит в том, чтобы создать файл template.properties, который содержит что-то вроде

#Comments for key1/value1
key1=${key1.value}

#Comments for key2/value2
key2=${key2.value}

и несколько файлов, таких как

#profile_data_1.properties
key1.value=profile_1_key_1_value
key2.value=profile_1_key_2_value

#profile_data_2.properties
key1.value=profile_2_key_1_value
key2.value=profile_2_key_2_value

, затем связывается с фазой создания ресурсов, чтобы создать копиюtemplate.properties per profile_data_ и отфильтруйте эту копию с помощью profile_data_ .properties в качестве фильтра.

Самый простой способ - создать файл сборки ant и использовать плагин antrun.Но это не Maven, не так ли?

Другой вариант - создать плагин Maven для этой крошечной задачи.Почему-то мне не нравится эта идея (развертывание плагинов - это не то, чего я очень хочу).

Ответы [ 2 ]

2 голосов
/ 15 мая 2010

Maven предлагает фильтрацию ресурсов , которую можно объединить с профилями Maven (см., Например, этот пост ), но я не уверен, что это поможет Вот. Если я правильно понимаю ваши потребности, вам нужно зациклить набор входных файлов и изменить имя выходного файла. И хотя первая часть была бы возможна с использованием нескольких <execution>, я не думаю, что вторую часть можно реализовать с помощью плагина resources .

Поэтому, если вы хотите сделать это в одной сборке, проще всего было бы действительно использовать плагин Maven AntRun и реализовать цикл и логику обработки с помощью задач Ant.

И если вам не понадобится повторно использовать это в нескольких местах, я бы не инкапсулировал эту логику в плагин Maven, это дало бы вам много преимуществ, если бы это было сделано в одном проекте, в уникальном месте.

1 голос
/ 17 мая 2010

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

Используйте эти URL в качестве отправной точки:

http://maven.apache.org/shared/maven-filtering/usage.html

и

http://maven.apache.org/plugins/maven-resources-plugin/

Sean

...