В настоящее время я разрабатываю архитектуру на основе микросервиса для своего приложения. У меня есть мультимодульный проект maven, у которого много сервисов, поэтому я могу легко развернуть их в концентратор докеров, используя команду maven deploy, а также maven docker plugin.Извлечь svn последний измененный номер редакции с помощью buildnumber-maven-plugin
Тем не менее, теги изображений докеров основаны на номере версии проекта, в то время как я хотел бы, чтобы они помечены с последним измененным номером ревизии каждого репозитория. От поры до времени, я пытаюсь просто добавить это поле в качестве манифеста записи с помощью buildnumber-maven-plugin:
Давайте предположим, что мой мульти-модуль проект:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
...
<modules>
<module>module-a</module>
<module>module-b</module>
</modules>
...
</project>
И модель для модуля-а будет быть:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<scm>
<connection>scm:svn:http://myrepo.com/svn/application/module-a</connection>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<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>
<doCheck>false</doCheck>
<doUpdate>true</doUpdate>
<useLastCommittedRevision>true</useLastCommittedRevision>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<SCM-Revision>${buildNumber}</SCM-Revision>
</manifestEntries>
</archive>
</configuration>
</plugin>
....
</plugins>
</build>
<dependencies>
...
</dependencies>
</project>
вопрос заключается в том, что {BuildNumber} вычисляется на мой рабочий число копий, которое является ссылкой на один последний коммит сделал в хранилище, а не в scm:svn:http://myrepo.com/svn/application/module-a
месте. Чтобы объяснить это лучше, когда я отобразить свойство модуля-а с черепахи я получил это:
То, что я хочу, чтобы получить 3248, который относится к последним реальным изменениям, внесенных в модуль-а , вместо 3257 (рабочая копия), что я получаю от плагина. Таким образом, плагин докеров будет знать, является ли это другим тегом изображения и нажимать его только в том случае, если изменения были внесены в модуль в репо.
Из чего я понимаю, у меня, вероятно, есть тот же [вопрос] (https://github.com/mojohaus/buildnumber-maven-plugin/issues/66). – Moreaki