Обычно я объявляю все зависимости в dependencyManagement
родительского проекта, а затем использую их в depenencies
модулей, но без version
. Версии объявляются только в родительском проекте.
Что касается scope
, я обычно не объявляю область действия в родительском элементе, если это не что-то очень очевидное, например JUnit.
Указать ли эту зависимость в POM каждого из двух подмодулей?
Если вы используете эту зависимость напрямую, то да. Даже если он будет включен транзитивно.
Если да, то какой "сфера"?
Это зависит от того, что такое зависимость и как вы ее используете. Гуава обычно будет compile
.
Или мне указать зависимость в родительском модуле?
Вы можете объявить его в dependencyManagement
в родительском файле, чтобы вам не нужно было указывать версию где-либо еще.
Но обычно вы не будете объявлять зависимость в родительском модуле, поскольку она будет унаследована всеми дочерними модулями. Обычно это слишком большое предположение.
Мне нужно, чтобы Гуава была включена в мой конечный продукт, но мне определенно не нужны две копии.
Не произойдет.
person
lexicore
schedule
12.08.2017
dependencyManagement
в родительском модуле и добавление туда вашей зависимости от Guava. В дочерних модулях вы добавляете зависимость от guava без версии и области действия (это будет обрабатываться родителем). Это предотвратит использование разных модулей с библиотекой разных версий. Насколько я знаю, невозможно сказать maven, чтобы он не генерировал две копии зависимости, если ваши модули генерируют два отдельных JAR-файла. Если это веб-модуль, он не будет создавать копии.... - person Jorge Campos   schedule 13.08.2017