Краткая версия:
Ищу предложения по распространению отфильтрованного файла ресурсов, содержащего общую информацию об авторских правах, название проекта, версию, 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 способом?
С нетерпением жду предложений,
/Хенрик