2017-01-18 4 views
10

Этот вопрос должен уточнить, что именно транзитивная зависимость есть и как она работает на очень высоком уровне в Maven.Что такое транзитивная зависимость Maven?

Мое определение: в дереве зависимостей, как A -> B -> C, С транзитивной зависимостью для A. Предположим, B имеет объем компиляция в пределах A.

Если С имеет масштабы составить в пределах В, а затем объявить B в зависимости от достаточно, чтобы построить A с Maven. Но если C имеет объем при условии в В тогда, когда Maven строит A, здание не будет автоматически компилировать против C если не декларирует C среди своих зависимостей.

Это правильно?

ответ

12

Ваше предположение верно.

Есть два типа зависимостей Maven:

  • Прямых: Эта зависимость, определенная в файле pom.xml в разделе <dependencies/>.

  • Transitive: Это зависимости, которые зависят от ваших прямых зависимостей.

Зависимости с provided рамки предназначены для:

  • Либо быть исключены из окончательного артефакта (например, для war файлов вы не хотели бы, чтобы включить servlet-api, servlet-jsp и т.д.)
  • Или переопределить - где проект, который наследует их, определяет версию и/или переопределяет область действия
Смежные вопросы