Делитесь отфильтрованным ресурсом между несколькими проектами удобным для m2eclipse способом.

Краткая версия:

Ищу предложения по распространению отфильтрованного файла ресурсов, содержащего общую информацию об авторских правах, название проекта, версию, inceptionYear и currentYear, в несколько проектов, используя что-то, что не дает ошибок при использовании из Eclipse с плагином m2e.

Описание:

Прямо сейчас у нас есть проект buildInfo, содержащий файл свойств с такими вещами, как ${project .name}, ${project.version}, ${inceptionYear}, ${currentYear}.

У нас есть parent.pom, который делает следующее:

  • определяет свойство currentYear, используя цель build-helper-maven-plugin:timestamp-property
  • распаковывает файл свойств buildInfo в ${project.build.directory}/buildInfo/${project.artifactId}, используя цель dependency:unpack.
  • скопируйте и отфильтруйте файл свойств для целей/классов, используя цель resources:copy-resources.

Все проекты, наследующие от parent.pom, теперь получают копию файла свойств, который отфильтрован по конкретному имени, версии и году создания этого проекта.

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

Почему:

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

Мы не смогли найти другого способа поиска правильного файла свойств, кроме как поместить его в папку с уникальным именем для каждого проекта.

Мы создаем приложения (повторно), используя множество этих проектов, что означает, что нам нужно найти эту информацию во многих разных файлах jar, поэтому имя/путь файла свойств должны быть уникальными.

Проблемы:

Плагину Eclipse m2e не нравятся цели dependency:unpack и build-helper-maven-plugin:timestamp-property.

При проверке проекта как проекта maven с использованием m2e-плагина он помечает pom-файлы, наследуемые от нашего parent.pom, как имеющие ошибки.

  • Мы перенесли выполнение двух целей на фазу упаковки, которая должна быть неинтересной для m2e, но по-прежнему вызывает ошибки (см.: https://docs.sonatype.org/display/M2ECLIPSE/Project+).build+lifecycle+mapping).
  • Мы добавили подключаемый модуль сопоставления жизненного цикла с конфигурацией, позволяющей игнорировать цель свойства временной метки, но он по-прежнему выдает ошибку при оформлении заказа, которая затем исчезает после оформления заказа.
  • Мы также добавили настройку для игнорирования цели распаковки.

Со всеми тремя изменениями вроде работает. К сожалению, при запуске проектов из Eclipse у нас больше нет файла свойств...

Проблема:

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

Досадно, что наше решение по-прежнему требует, чтобы мы знали, из каких проектов состоит приложение, чтобы считывать информацию из каждой банки и представлять ее в поле «О программе».

Вопрос:

Как бы вы предложили добавлять общую информацию в несколько проектов, используемых в приложении, и иметь возможность искать ее для каждого из jar-файлов?

И можно ли это сделать с помощью maven удобным для m2e способом?

С нетерпением жду предложений,
/Хенрик


person hdohlmann    schedule 14.08.2012    source источник


Ответы (1)


Я использовал подключаемый модуль удаленных ресурсов maven для аналогичной цели, как описано в другом ответе SO. Мне все еще нужно было добавить в свой POM материал для отображения жизненного цикла m2e, я использовал действие <execute>. Отлично работает в командной строке mvn и в Eclipse.

Единственная проблема, с которой я столкнулся, заключается в том, что иногда Eclipse, кажется, удерживает какую-то блокировку в файле ресурсов, если я его редактирую; затем следующий отчет mvn clean «не может удалить файл, потому что он используется». Запуск «Обновить конфигурацию проекта» в ресурсном проекте в Eclipse устраняет проблему. Я принимаю эту боль, потому что, по крайней мере, я избегаю дублирования, и я не склонен часто редактировать общие ресурсы. (Я также надеюсь, что последняя версия Eclipse, до которой я еще не обновился, поможет!)

person user944849    schedule 14.08.2012