Как я могу эффективно объявить предоставленные зависимости области в многокомпонентных сборках maven? - PullRequest
4 голосов
/ 24 ноября 2011

У меня есть мультимодульный пом Maven, который строит войну.Я хочу объявить предоставленную зависимость области видимости от jsp-api в родительском pom.Документы Maven предполагают, что зависимости, объявленные как предоставленные, не являются транзитивными, поэтому:

Нужно ли мне поэтому проходить через все pom подмодулей и объявлять предоставленную зависимость? Есть ~ 40 модулейв проекте, и не сразу понятно, для чего понадобится зависимость, так что кажется, что нужно приложить немало усилий, чтобы достичь не очень много, и мне лень.Как вы справляетесь с этой ситуацией в своих проектах?

- Edit -

Так что для других пользователей это происходило, потому что родительский pom определял все зависимости вЗависимость раздел управления.Я бы не сталкивался с этим раньше, но это помогает сократить дублирование сложных зависимостей с исключениями или другими нетривиальными атрибутами.Это также переопределяет механизм наследования.Насколько я понимаю, хорошее эмпирическое правило заключается в том, чтобы использовать его только для решения проблемы, а не просто бросать все свои зависимости туда, как это сделал автор этой статьи.Возможно, подходящий эксперт Maven мог бы подтвердить это.

1 Ответ

2 голосов
/ 24 ноября 2011

Даже если предоставленные зависимости области видимости не являются транзитивными, они могут быть унаследованы. То есть, если у вас есть модуль A с предоставленной зависимостью области, а модуль B имеет зависимость от A, модуль B не будет неявно иметь предоставленную зависимость области. Однако я считаю, что если модуль C имеет модуль A в качестве родительского pom, он должен наследовать эту зависимость как обычно.

Вы можете проверить это поведение самостоятельно, запустив mvn help:effective-pom на одном из дочерних помп, цель эффективного помпа должна дать вам полностью разрешенное представление о помпе, на котором вы его запускаете, с учетом наследования, эквивалентного тому, что maven будет на самом деле использовать, когда он работает. Если <dependency> появляется там (как мне кажется в моих экспериментах), у вас все получится, указав зависимость только в родительском пом.

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