2016-04-04 6 views
3

Я использую плагин Version Maven Pluginuse-latest-versions для обновления groupID = com.example * внутренних версий зависимостей до последней версии. Это выполняется как часть нашей системы CI с использованием Jenkins.Почему плагин Maven Versions (версии: use-latest-versions) не обновляет/изменяет версию версии SNAPSHOT (нет версии -SNAPSHOT)?

Когда разработчики начинают работу над новой функцией, они разворачивают код, работают на ветке и когда новая функция реализована (или частично реализована), код объединяется обратно в магистраль (обычно несколько раз в неделю).

Ветви версия обновление:

  • Использование "снимка" профиля. Ниже конфигурации pom.xml снимок конфигурации профиля и Artifactory репо
  • Команда используется для обновления версии: mvn -P snapshot -B versions:use-latest-versions versions:update-properties -Dincludes=com.example* -DexcludeReactor=false -DallowSnapshots=true ...

Магистральные версия обновления:

  • Использование "производства" профиль. Ниже конфигурации pom.xml профиля производства и Artifactory конфигурации
  • Команда используется для обновления версии: mvn -P production -B versions:use-latest-versions versions:update-properties -Dincludes=com.example* -DexcludeReactor=false ...

Иногда ветвь строит обновления версии com.example * зависимостей в «...- ПАНОРАМА» версия (это нормально потому что libs-snapshot Artifactory repo используется как репозиторий зависимостей, который может иметь версии зависимостей -SNAPSHOT). Эти обновления версий проверяются обратно на исходный элемент управления (svn).

Когда код (включая изменения обновления версии pom.xml) объединяется из ветвей в магистраль и выполняется сборка соединительных линий, все версии внутренней версии com.example должны быть изменены/обновлены до последних версий выпуска. Но по какой-то причине, когда версии зависимостей имеют «-SNAPSHOT» в нем версии: use-latest-versions не меняет/не обновляет версию до последней версии (не -SNAPSHOT).


Пример:

Artifactory РЕПО имеют плавные версии:

  • LIBS-снимок имеет "com.example: MYLIB: 1.1.10-SNAPSHOT", «com.example : MYLIB: 1.1.11-СНАПШОТ»
  • LIBS-релиз имеет "com.example: MYLIB: 1.1.9", "com.example: MYLIB: 1.1.12"

Создание филиалов MYAPP построить получите версии зависимостей от ЛИЭСА-снимки и обновлений com.example: версию MYLIB к 1.1.11-SNAPSHOT и проверить это обновление обратно в SVN

...  
    <dependency> 
     <groupId>com.example</groupId> 
     <artifactId>myLib</artifactId> 
     <version>1.1.11-SNAPSHOT</version> 
    </dependency> 
... 

Слияние код обратно в ствол включая выше изменение версии зависимостей и запуск сборки соединительной линии (включая обновление версии) mvn -P production -B versions:use-latest-versions... не меняет com.example: myLib version to 1.1.Конфигурация 12


Artifactory:

  • Местные РЕПО: LIBS-снимок локального (репозиторий разработки); libs-release-local (релиз-репозиторий)
  • Виртуальные репозитории: libs-snapshot (включает в себя libs-snapshot-local, libs-release-local и remote-repos); ЛИЭС-релиз (включает в себя LIBS-релиз локальный и удаленный репо) конфигурации

pom.xml:

... 
<profiles> 
    <profile> 
     <id>snapshot</id> 
     <distributionManagement> 
      <repository> 
       <id>libs-snapshot-local</id> 
       <name>Internal Applications Snapshot Repository</name> 
       <url>http://example.com/artifactory/libs-snapshot-local</url> 
      </repository> 
     </distributionManagement> 

     <repositories> 
      <repository> 
       <snapshots> 
        <enabled>true</enabled> 
        <updatePolicy>always</updatePolicy> 
       </snapshots> 
       <id>libs-snapshot</id> 
       <name>libs-snapshot</name> 
       <url>http://example.com/artifactory/libs-snapshot</url> 
       <releases> 
        <enabled>true</enabled> 
        <updatePolicy>always</updatePolicy> 
       </releases> 
      </repository> 
      <repository> 
       <snapshots> 
        <enabled>false</enabled> 
       </snapshots> 
       <id>libs-release</id> 
       <name>libs-release</name> 
       <url>http://example.com/artifactory/libs-release</url> 
       <releases> 
        <enabled>true</enabled> 
        <updatePolicy>always</updatePolicy> 
       </releases> 
      </repository> 
     </repositories> 

     <build> 
      ... 
     </build> 
    </profile> 

    <profile> 
     <id>production</id> 

     <distributionManagement> 
      <repository> 
       <id>libs-release-local</id> 
       <name>Internal Applications Snapshot Repository</name> 
       <!-- Artifacts are promoted to libs-release-local not deployed directly --> 
       <url>http://example.com/artifactory/libs-snapshot-local</url> 
      </repository> 
     </distributionManagement> 

     <repositories> 
      <repository> 
       <snapshots> 
        <enabled>false</enabled> 
       </snapshots> 
       <id>libs-release</id> 
       <name>libs-release</name> 
       <url>http://example.com/artifactory/libs-release</url> 
       <releases> 
        <enabled>true</enabled> 
        <updatePolicy>always</updatePolicy> 
       </releases> 
      </repository> 
     </repositories> 

     <build> 
      ... 
     </build> 
    </profile> 

</profiles> 

...

ответ

2

Вы должны убедиться, что вы используя плагин последних версий (2.3). Я считаю, 2.3fixed some issues (это, как говорится, все еще невероятно багги-плагин).

Другая проблема, которую я нашел с плагином версии, сочетается с целями другой версии или даже с другими целями maven. Не делай этого. Например, ваш код выше вы используете versions:use-latest-versions versions:update-properties одновременно. Вместо этого выполните mvn один раз для каждой из этих целей. Да, это боль и замедляет процесс сборки, но я нашел гораздо более надежным , особенно если вы используете версии: update-parent (2.3, возможно, исправили эти проблемы).

Я также думаю excludeReactor is generally broken. Если вы используете обновление версии для агрегированного проекта, я не рекомендую его. Вместо этого перейдите к каждому подмодулю и запустите команду.

0

Вы должны сделать 2 шага:

  1. версии МВН: USE-релизы (Это изменит все SNAPSHOT выпустить версии)
  2. версии МВН: потребительная последний релиз (Это изменит ток версия выпуска до последней доступной версии)

Я думаю, что в документации есть ошибка.

http://www.mojohaus.org/versions-maven-plugin/examples/advancing-dependency-versions.html

Документация:

версия: потребительные последние-релизы поиск П для всех версий, не SNAPSHOT, которые были более новым релизом и заменяют их с последней версией.

конфликты с матрицей целей ниже.

 Смежные вопросы

  • Нет связанных вопросов^_^