Как отфильтровать ресурсы при сборке в проекте Eclipse? - PullRequest
5 голосов
/ 06 августа 2009

У меня есть приложение, которое использует несколько файлов конфигурации (давайте просто рассмотрим appli.properties здесь). Эти файлы содержат несколько значений, которые зависят от среды. Мы можем найти некоторую информацию, такую ​​как:

server.port=${envi.server.port}

С другой стороны, у меня есть набор файлов свойств, по одному на среду (dev.properties, homolo.properties и т. Д.). Они содержат значения для некоторых свойств в файлах конфигурации. Мы можем найти здесь такого рода свойства:

envi.server.port=4242

Моя сборка обрабатывается Maven2. Все работает нормально.

Однако теперь мне нужно импортировать мой проект в Eclipse. Мое основное беспокойство связано с фильтрацией файлов конфигурации. Действительно, если я не изменю что-либо в своем параметре Eclipse для моего проекта (после mvn eclipse: eclipse ), тогда весь мой файл конфигурации будет сохранять ключи свойств (то есть ${envi.server.port}) вместо их ценности. И с такими файлами конфигурации мое приложение не будет работать внутри Eclipse ...

Итак, я попробовал два решения:

  • Полное решение Maven с использованием плагина m2eclipse. Я добавляю Maven Builder в конфигурацию проекта, а затем при каждом построении выполняется фильтрация файлов.
  • Муравей (который используется только внутри Eclipse). Я вряд ли определил задачу, которая имитирует фильтрацию файлов Maven2 в Ant. Эта задача предназначена только для фильтрации, без компиляции.

Общая проблема этих двух решений состоит в том, что фильтрация выполняется при каждой операции (по существу экономит на выпуске класса Java), а затем занимает время. Второе решение, однако, быстрее (3 секунды), чем первое (более 10 секунд).

Что вы думаете о моем подходе? Как бы вы сделали это лучше?

1 Ответ

2 голосов
/ 06 августа 2009

Если ресурсы не меняются так часто, вы можете настроить сборку Maven на запуск только после Чистой сборки, тогда она не будет сильно мешать, однако это ничего не сделает для ускорения сборки.

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

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

...