Блин, вы правы, это свойство не заменяется при фильтрации ресурсов. Это странно и звучит как ошибка в Плагине ресурсов Maven , потому что это свойство правильно интерполируется во время фазы process-resources
, как я продемонстрирую в обходном пути, который я предлагаю ниже (на основе плагин antrun и задача replace
).
Сначала добавьте в свой POM следующее:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<tasks>
<echo>${project.dependencies[0].artifactId}</echo><!-- I'm a test -->
<replace file="${project.build.outputDirectory}/myxmlfile.xml"
token="@@@" value="${project.dependencies[0].artifactId}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Затем обновите файл XML на:
<somenode>
<fileName>@@@</fileName>
</somenode>
С этими изменениями выполнение mvn process-resources
даст следующий результат:
$ cat target/classes/myxmlfile.xml
<somenode>
<fileName>OtherLibrary</fileName>
</somenode>
Что доказывает, что свойство интерполировано (но не установлено во время maven-фильтрации ресурсов) 1 . А если вам нужно отфильтровать более одного файла, задача replace
может принять набор файлов. Адаптируйте его под свои нужды.
1 На самом деле было бы неплохо создать новую Jira для этой ошибки в Maven 2.x Resources Plugin . I ' мы создали MRESOURCES-118 .