Я хочу иметь buildNumber
из buildnumber-maven-plugin в файле XML.
Я настроил плагин номера сборки. Я вижу, что это работает, потому что finalName устанавливается с номером сборки. Затем я настроил фильтрацию ресурсов. Я вижу, что ресурс deployment.xml
фильтруется, потому что он заменяет ${project.version}
. Однако это не заменяет ${buildNumber}
. Что я должен сделать по-другому, чтобы это работало? Я посмотрел на Плагин номера сборки Maven, как сохранить номер сборки в файле? , но он работает не так, как там, хотя там делается почти то же самое.
pom . xml:
<!-- build number -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<format>{0,number}</format>
<items>
<item>buildNumber</item>
</items>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
</configuration>
</plugin>
</plugins>
<finalName>${project.artifactId}-${project.version}-r${buildNumber}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/deployment.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/deployment.xml</exclude>
</excludes>
</resource>
</resources>
</build>
<!-- dummy scm for build number plugin -->
<scm>
<connection>scm:git:http://127.0.0.1/dummy</connection>
<developerConnection>scm:git:https://127.0.0.1/dummy</developerConnection>
<tag>HEAD</tag>
<url>http://127.0.0.1/dummy</url>
</scm>
src / main / resources / deploy. xml
<root>
<build>
<buildNumber>${buildNumber}</buildNumber>
<buildNumber>${project.version}</buildNumber>
<buildNumber>${project.finalName}</buildNumber>
</build>
</root>
target / classes / deploy. xml
<root>
<build>
<buildNumber>${buildNumber}</buildNumber>
<buildNumber>1.0.0-BUILD-SNAPSHOT</buildNumber>
<buildNumber>${project.finalName}</buildNumber>
</build>
</root>
Теперь я заметил кое-что странное: во время установки maven номер сборки сначала заменяется на файл XML, а затем файл XML снова заменяется на файл XML выше, в котором ${buildNumber}
не заменен.
Я попытался отключить дополнительные шаги копирования, но, похоже, это не дает ожидаемого эффекта (у меня все еще есть та же проблема):
[INFO] --- maven-resources-plugin:3.1.0:copy-resources (copy-resources) @ rator ---
[INFO] Using 'Cp1252' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 83 resources
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ rator ---
[INFO] Skipping the execution.
[INFO]
.. compiling ..
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ rator ---
[INFO] Not copying test resources
[INFO]
Я смотрел на целевые / классы. Кажется, номер сборки правильно упакован в файл war, когда я смотрю на target/xxx-1.0.0-BUILD-SNAPSHOT-r36/WEB-INF/classes/deployment.xml
. Я думаю, я могу жить с этим, хотя я до сих пор не понимаю, почему файл target/classes/deployment.xml
воссоздается после замены buildNumber.
Больше странностей: когда я редактирую src/main/resources/deployment.xml
, то файл target/classes/deployment.xml
также обновляется. Должно быть что-то сделано в IDE Eclipse?
Я перенес развертывание. xml в resources-filtered/deployment.xml
, но перезапись сохраняется.