#maven #jgitver #flatten-maven-plugin
#maven #jgitver #сгладить-maven-плагин
Вопрос:
Мне нужно заменить все вхождения ${project.version}
на реальное значение в pom.xml .
Я могу сделать это с maven-flatten-plugin
, но это перепишет все pom.xml вместо простой замены project.version
only.
Поскольку я хочу использовать jgitver-maven-plugin
я не могу использовать resolveCiFriendliesOnly
режим плагина flatten.
Есть ли простой способ заменить только одну переменную во всем pom.xml ? Есть ли другая (скрытая) опция в плагине flatten для этого?
Комментарии:
1. Вы пытаетесь заменить содержимое переменной или фактическую версию POM, как
<version>1</version>
, на что-то другое?
Ответ №1:
Вы можете использовать плагин выпуска maven, в частности, цель обновления версий.
пример: mvn — выпуск в пакетном режиме: обновление версий -DdevelopmentVersion=1.2.0-СНИМОК
https://maven.apache.org/maven-release/maven-release-plugin/examples/update-versions.html
Ответ №2:
Есть что-то близкое к тому, чего вы хотите достичь, но может быть достаточно хорошим. Однако это разрешит все переменные в разделах POM по вашему выбору.
Я использовал resolveCiFriendliesOnly
, поскольку это единственный режим, который сохраняет исходный POM.
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
<pomElements>
<dependencyManagement>resolve</dependencyManagement>
<!-- add more sections to resolve -->
</pomElements>
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Теперь вы можете добавить дополнительные разделы под <pomElements>
, где вы хотите разрешить переменные.
В качестве побочного эффекта resolveCiFriendliesOnly
переменные ${revision}
, ${sha1}
и ${changelist}
будут разрешены во всем файле POM.
Имейте в виду, что flatten-maven-plugin
ваш POM все равно будет переписан, т. Е. вы можете изменить порядок разделов, потерять комментарии, отступы и т.д.
Вот список разделов, которые вы можете настроить: https://www.mojohaus.org/flatten-maven-plugin/apidocs/org/codehaus/mojo/flatten/FlattenDescriptor.html
Если resolveCiFriendliesOnly
ваш POM все еще портит работу, вы можете удалить flattenMode
, но тогда он выйдет из строя, и вы должны добавить почти все возможные разделы в опцию <pomElements>
with keep
, например
<pomElements>
<dependencyManagement>resolve</dependencyManagement>
<!-- keep everything else -->
<parent>keep</parent>
<build>keep</build>
<distributionManagement>keep</distributionManagement>
<repositories>keep</repositories>
<pluginRepositories>keep</pluginRepositories>
<profiles>keep</profiles>
...
</pomElements>