Задача состоит из двух частей:
Вы пытаетесь установить buildNumber
в версию до ее разрешения, поэтому она всегда будет ${buildNumber}
, а не разрешенным значением.
Вместо того, чтобы пытаться динамически изменять версию, вы должны установить buildNumber
в элемент finalName
в сборке. Это создаст артефакты с намеченным именем в локальном хранилище.
Плагин установки игнорирует finalName
и развертывает его как 1.0.0-SNAPSHOT
независимо от того, я не знаю, как решить эту проблему. buildNumber
добавляется в манифест, если вы настраиваете плагин, как показано ниже.
Итак, ваша конфигурация будет выглядеть примерно так:
<version>1.0.0-${release.identifier}</version>
...
<build>
<finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
...
</build>
Я бы не использовал номера сборки в SNAPSHOT
проектах.
Maven предоставляет ключевое слово SNAPSHOT
для обозначения изменчивого проекта в активной разработке. Поэтому, если вы ссылаетесь на проект с SNAPSHOT
версией зависимостей, Maven автоматически проверяет наличие обновлений и синхронизирует ваши зависимости.
Если вы затем добавите номер сборки в конец этой версии, вам придется вручную обновить зависимости, поэтому вы потеряете все преимущества наличия суффикса SNAPSHOT
.
Лично я, во всяком случае, по возможности избегаю номеров сборок. Если мне нужно обновить проект, я просто поднимаю номер версии или использую суффикс, например beta-2
или RC2
. Если вам нужно отслеживать ревизию в SNAPSHOT
, я бы порекомендовал добавить ее в манифест, чтобы вы могли проверить, откуда произошла сборка, но использовать стандартный суффикс SNAPSHOT
, чтобы позволить Maven разрешать версии в обычном порядке. В приведенной ниже конфигурации показано, как добавить ревизию в манифест.
Что касается вашей конфигурации, мне кажется, что все в порядке, если ваш URL-адрес SCM настроен правильно. Если у вас нет конфигурации SCM в вашем POM, это может быть проблемой.
Можете ли вы запустить с -X
и проверить наличие вывода из плагина, указывающего, почему он не устанавливает свойство?
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>0.9.4</version>
<executions>
<execution>
<id>useLastCommittedRevision</id>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.1</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Implementation-Build>${buildNumber}</Implementation-Build>
</manifestEntries>
</archive>
</configuration>
</plugin>