Я могу установить версию проекта с buildnumber-maven-plugin?

1 ответ

Проблема состоит из двух частей:

  1. Вы пытаетесь установить buildNumber в версию до того, как она будет решена, поэтому он всегда будет $ { buildNumber} , а не разрешенное значение.

    Вместо того, чтобы пытаться динамически изменять версию, вы должны установить buildNumber в элемент finalName в сборке. Это создаст артефакты с заданным именем в локальном репозитории.

  2. Плагин установки проигнорирует 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>
]
9
ответ дан 2 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: