Проблема состоит из двух частей:
Вы пытаетесь установить buildNumber
в версию до того, как она будет решена, поэтому он всегда будет $ { buildNumber}
, а не разрешенное значение.
Вместо того, чтобы пытаться динамически изменять версию, вы должны установить buildNumber
в элемент finalName
в сборке. Это создаст артефакты с заданным именем в локальном репозитории.
Плагин установки проигнорирует finalName
и развернет его как 1.0.0-SNAPSHOT
независимо от того, я не Я не знаю, как с этим справиться. buildNumber
добавляется в манифест, если вы настраиваете плагин, как показано ниже.
Итак, ваша конфигурация будет примерно такой:
1.0.0 - $ {release.identifier} <
...
<сборка>
$ {project.artifactId} - $ {project.version} - $ {buildNumber}
...
Я бы не использовал номера сборок в проектах SNAPSHOT
.
Maven предоставляет ключевое слово SNAPSHOT
, чтобы обозначить изменчивый проект в активной разработке. Поэтому, если вы ссылаетесь на проект с версией зависимостей SNAPSHOT
, Maven автоматически проверяет наличие обновлений и синхронизирует ваши зависимости.
Если вы затем добавите номер сборки в конец этой версии, вы будете придется вручную обновлять зависимости, поэтому вы теряете все преимущества суффикса SNAPSHOT
.
Лично я в любом случае избегаю использования номеров сборки там, где это возможно. Если мне нужно обновить проект, я просто увеличиваю номер версии или использую суффикс вроде beta-2
или RC2
. Если вам нужно отследить ревизию в SNAPSHOT
, я ' d порекомендуйте добавить его в манифест, чтобы вы могли проверить, откуда была создана сборка, но используйте стандартный суффикс 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>
]