Я использую плагин 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>
...