Манипулировать свойство версии проекта для удаления SNAPSHOT?
У меня есть проект в версии 0.0.1-SNAPSHOT, и когда мы его создаем через TeamCity, мы также получаем свойство build.vcs.number, которое является ревизией Subversion, которая вызвала сборку.
В наших сборках мы создаем zip файл, называемый как foo-distribution-0.0.1-SNAPSHOT.zip, но мне было интересно, есть ли способ, который я могу вставить свойство build.vcs.number в имя артефакта, чтобы дать foo-distribution-0.0.1.12345-SNAPSHOT.zip?
Есть ли встроенное свойство, которое является только числовой частью номера версии, или каким-либо другим способом отделить часть -SNAPSHOT?
EDIT: я уже пытался установить версию pom.xml как ${my.version} -SNAPSHOT, а затем определить my.version в свойствах - это работает навсегда, кроме Maven Release Plugin, который жалуется, что он не может разобрать версию (понятно, она не может автоматически угадать следующую версию разработки).
Ответы
Ответ 1
Я понимаю, что этот вопрос немного устарел, но я столкнулся с подобной ситуацией, и именно так я решил:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>parse-version</id>
<goals>
<goal>parse-version</goal>
</goals>
</execution>
</executions>
</plugin>
Что этот плагин-сборщик-сборщик "parse-version" mojo сделает, это предоставить вам следующие свойства, которые вы можете использовать по своему усмотрению:
parsedVersion.majorVersion
parsedVersion.minorVersion
parsedVersion.incrementalVersion
parsedVersion.qualifier
parsedVersion.buildNumber
Это должно охватывать все ваши "нужные детали". В настоящее время я использую это для создания chrome-расширений, в которых манифеста-версия не может включать "-SNAPSHOT" и должна содержать не более 4 чисел, разделенных точками. В моем случае использования я использую эту комбинацию для получения желаемого результата:
"version":"${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}"
Итак, я по сути зачищаю "-SNAPSHOT", поэтому мои локальные копии моего расширения будут правильно установлены для тестирования. Вы можете построить все, что хотите, с кусками. =)
Ответ 2
Для других, которые хотят сделать больше, чем это или хотели бы удалить SNAPSHOT из номера сборки, этот плагин очень полезен
http://www.mojohaus.org/build-helper-maven-plugin/usage.html
Я особенно нашел этот полезный
Задайте свойство, применив замену регулярного выражения к значению
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>regex-property</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>human.version</name>
<value>$\{project.version}</value>
<regex>-SNAPSHOT</regex>
<replacement> pre-release development version</replacement>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>