Чтобы разделить ресурс (файл свойств) между несколькими проектами, я хочу использовать maven-remote-resources-plugin
.Файл общих свойств должен быть отфильтрован Maven так, чтобы реальная программа могла получить некоторую информацию о сборке.
Поскольку файл свойств всегда один и тот же, моя цель состоит в том, чтобы иметь родительский pom, который обрабатывает обработку этогофайл.Таким образом, структура проектов:
- проект пакета ресурсов (содержит файл свойств)
- родительский pom
В идеале 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
имеет свои собственные параметры фильтра, я ожидалэта фильтрация работала бы из коробки.
Дополнительная информация
Я проверил журналы отладки, и кажется, что файл копируется дважды:
[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
самым полезным результатом стал исходный код .К сожалению, это не очень полезно для меня.