Подтвердить что ты не робот

Манипулировать свойство версии проекта для удаления 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, который жалуется, что он не может разобрать версию (понятно, она не может автоматически угадать следующую версию разработки).

4b9b3361

Ответ 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>