Как я могу заставить мои подпроекты наследовать версии зависимостей от суперпроекта в многомодульном проекте Maven?
У меня есть многомодульный проект Maven, и я хочу, чтобы подпроекты унаследовали версии для сторонних зависимостей, которые я указал в Родительском проекте. Это так, что мне не нужно копировать номера версий везде. Это не работает, хотя и когда я оставляю номер версии на детях, я получаю ошибку:
dependencies.dependency.version is missing
что мне нужно изменить, чтобы получить эту работу?
3 ответов
на <dependencyManagement>
раздел родительского POM предназначен для этой цели:
dependencyManagement
: используется POMs для управления информацией о зависимостях во всех его дочерних элементах. Если используетdependencyManagement
чтобы определить зависимость отjunit:junit:4.0
, то POMs, наследующие от этого, могут установить свою зависимость, даваяgroupId=junit
иartifactId=junit
только, тогда Maven заполнитversion
установить с помощью родителей. Преимущества этого метода очевидны. Зависимость детали могут быть установлены в одном центральном расположении, которое будет распространяться на все наследующие POMs. Кроме того, версия и область артефактов, которые включены из транзитивных зависимостей, также могут управляться путем их указания в разделе управление зависимостями.
У вас есть какие-либо зависимости войны?
существует открытая Джира, которая может быть связана с проблемой, с которой вы столкнулись:
для этого я определяю версии зависимостей, которые мне нужно повторить как свойство в Родительском проекте. Итак:
<properties>
...
<guice.version>2.0</guice.version>
</properties>
и затем:
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>${guice.version}</version>
</dependency>
не совсем то, что вы просите возможно, но это означает, что вы должны только изменить версии в одном месте.