Активировать фильтрацию в maven-remote-resources-plugin
Чтобы разделить ресурс (файл свойств) между несколькими проектами, я хочу использовать maven-remote-resources-plugin
, Файл общих свойств должен быть отфильтрован Maven так, чтобы реальная программа могла получить некоторую информацию о сборке.
Поскольку файл свойств всегда один и тот же, моя цель - иметь родительский pom, который обрабатывает этот файл. Структура проектов поэтому:
- проект пакета ресурсов (содержит файл свойств)
- родительский пом
- Проект 1
- Проект 2
- ...
В идеале pom.xml Project X не содержит информации о файле свойств.
На самом деле я действительно близок к своей цели.
В родительском пом я добавил:
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>process-remote-resources</id>
<goals>
<goal>process</goal>
</goals>
<configuration>
<resourceBundles>
<resourceBundle>com.gillesB:resourceJar:1.0</resourceBundle>
</resourceBundles>
<runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
</configuration>
</execution>
</executions>
</plugin>
Я также добавил зависимость com.gillesB:resourceJar:1.0
,
Когда я собираю Project X, файл свойств записывается в target/maven-shared-archive-resources
и это также добавляется к сгенерированному jar
, Но заполнители в файле не заменяются фактическими значениями.
Если я добавлю следующее в Project X pom:
<resource>
<directory>${project.build.directory}/maven-shared-archive-resources</directory>
<filtering>true</filtering>
</resource>
Файл свойств в банке фильтруется. Но для этого ребенка поменять надо.
Как я не видел <resource>
в документации и process
-goal имеет свои собственные параметры фильтра, я ожидал, что фильтрация будет работать из коробки.
Дальнейшая информация
Я проверил журналы отладки, и кажется, что файл копируется дважды:
[INFO] Copying 1 resource
[DEBUG] file app.properties has a filtered file extension
[DEBUG] filtering D:\projectX\target\maven-shared-archive-resources\app.properties to D:\projectX\target\classes\app.properties
[DEBUG] resource with targetPath null
directory D:\pX\target\maven-shared-archive-resources
excludes []
includes []
[DEBUG] ignoreDelta true
[INFO] Copying 1 resource
[DEBUG] file app.properties has a filtered file extension
[DEBUG] copy D:\projectX\target\maven-shared-archive-resources\app.properties to D:\projectX\target\classes\app.properties
[DEBUG] no use filter components
Если я опущу <resource>
только вторая часть появляется в журнале. После поиска no use filter components
Наиболее полезным результатом был исходный код. К сожалению, это не очень полезно для меня.