Почему переопределенная область Maven не распознается транзитивно? - PullRequest
0 голосов
/ 28 октября 2018

Это интересное положение дел в Мейвене, которого я не ожидал. Может быть, кто-то может точно объяснить, почему это происходит.

У меня есть родительский POM foobar-parent, который объявляет logback-classic с областью test в разделе <dependencyManagement>.

У меня есть отдельный проект example, который имеет свой собственный example-parent, который наследуется от foobar-parent и также является родительским для его подмодулей.

Один подмодуль example-foo переопределяет зависимость logback-classic и дает ей compile scope:

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <scope>compile</scope>
</dependency>

Наконец, у меня есть другой подмодуль example-bar, который использует example-foo в качестве зависимости.

Странно, но для эффективного POM example-bar он показывает, что logback-classic имеет test область действия !! Поскольку example-foo объявляет logback-classic областью действия compile (что означает, что это требуется во время компиляции), а поскольку example-bar имеет зависимость времени компиляции от example-foo, я ожидал, что example-bar введет logback-classic как переходная зависимость.

Я понимаю, что область действия test, указанная в разделе управления <dependencyManagement> родительского POM, переопределит область действия переходной зависимости из области действия compile !! Это правильная интерпретация, и именно так должен работать Maven?

1 Ответ

0 голосов
/ 28 октября 2018

Вы правы: «управление зависимостями имеет приоритет над посредничеством зависимостей для транзитивных зависимостей» (взято из Введение в механизм зависимостей )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...