Одним из преимуществ организации Java-проекта с помощью Maven является удобное описание всех необходимых для него библиотек и их версий.
В дальнейшем по мере развития проекта мы возможно захотим иметь возможность обновлять версии этих библиотек.
Эту функциональность обеспечивает расширение Версии .
Управление версиями зависимостей можно разделить на три части:
- версия родительского проекта (при наличии);
- версия зависимости;
- используемая версия расширений Maven.
Достаточно запустить в корне вашего проекта команда :
Чтобы иметь возможность обновлять версии остальных зависимостей, их версии должны быть явно описаны как переменные в разделе характеристики Проект Мавен.mvn versions:update-parent
Зависимости, версии которых описаны без ссылки на переменную, не могут быть обновлены таким способом.
То же самое относится и к версиям всех используемых вами расширений.
Таким образом, вам необходимо явно прописать в проекте все используемые расширения, поместив их версии в переменные, после чего их версии также начнут обновляться.
В результате все наши зависимости и расширения будут выглядеть так: <Эxml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
xmlns=" http://maven.apache.org/POM/4.0.0 "
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd ">
<properties>
<spring.version>4.2.0.RELEASE</spring.version>
<maven-clean.version>2.6.1</maven-clean.version>
</properties>
<dependencies>
<!-- Spring Framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<executions>
<execution>
<id>auto-clean</id>
<phase>initialize</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven-clean.version}</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Чтобы выяснить, какие еще расширения мы не указали явно, нам нужно использовать команда : mvn versions:display-plugin-updates
по результатам его работы вы сможете узнать, какие еще расширения не зарегистрированы в вашем проекте и версиями которых вы не управляете.
Там же будет указано, какую минимальную версию Maven вам нужно указать в своем проекте, чтобы все расширения работали корректно.
Важно отметить, что зависимости, включенные в ваш проект через родительский проект, не будут обновляться до тех пор, пока вы явно не включите их в список зависимостей вашего проекта, переместив их из родительского проекта.
Это может быть полезно, если вы хотите иметь в своем проекте набор версий, отличный от того, который предоставляет готовый родительский проект.
После завершения всех операций, описанных выше, мы можем напрямую обновить все версии, которые мы описали как переменные, запустив команда : mvn versions:update-properties
Далее вы можете просмотреть список изменений, внесенных расширением в проект Maven, и принять решение об их целесообразности.
Просматривая список предлагаемых новых версий, вы очень быстро обнаружите, что там начинают появляться нефинальные версии зависимостей, которые вам, скорее всего, не нужны.
Чтобы описать, какие версии вы хотели бы пропустить при обновлении, используйте специальный файл , где исключения могут быть описаны как определенные версии или выражения регулярных выражений для определенных зависимостей или групп зависимостей.
Давайте создадим файл maven-версия-rules.xml в корне проекта со следующим содержимым: <Эxml version="1.0" encoding="UTF-8"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
comparisonMethod="maven"
xmlns=" http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0 "
xsi:schemaLocation="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0 http://www.mojohaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd ">
<rules>
<rule groupId="org.hibernate">
<ignoreVersions>
<ignoreVersion type="regex">.
*Alpha.*</ignoreVersion> <ignoreVersion type="regex">.
*Beta.*</ignoreVersion> <ignoreVersion type="regex">.
*[.
]CR.*</ignoreVersion>
</ignoreVersions>
</rule>
</rules>
</ruleset>
И давайте подключим его: <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
<rulesUri> file://${project.basedir}/maven-version-rules.xml </rulesUri>
</configuration>
</plugin>
В результате вы можете захотеть создать такой файл update.bat (В качестве опции, update.sh ) для обновления версий в будущем: call mvn versions:update-parent versions:update-properties
или просто: call mvn versions:update-properties
Следует отметить, что такие проекты, как Весенняя платформа ввода-вывода И Весенние ботинки в своих родительских проектах они уже предоставляют актуальные и проверенные на совместимость версии очень большого количества библиотек, что позволяет использовать их в своих проектах без указания конкретной версии.
Все источники доступны по адресу GitHub .
Теги: #java #maven #spring framework #spring bootugin #разработка веб-сайтов #java
-
Аукцион От Huawei: Афера?
19 Oct, 24 -
Новая Функция - Импорт Контактов
19 Oct, 24 -
Что Нового У Нас
19 Oct, 24 -
На Основе Guirunner
19 Oct, 24