Является ли сфера действия системы Maven транзитивной, но «предоставленной» нет? - PullRequest
10 голосов
/ 11 февраля 2011

Ссылка Maven POM гласит следующее:

при условии - это очень похоже на компиляцию, но означает, что вы ожидаете JDK или контейнер, чтобы предоставить его в во время выполнения. Доступно только на компиляция и проверка пути к классам, и не транзитивно .

...

system - эта область действия аналогична предоставленной за исключением того, что вы должны предоставить банку, в которой он содержится в явном виде. Артефакт всегда доступно и не ищется в хранилище.

Я сейчас преобразовал проект с большим количеством системных зависимостей в «предоставленный». Однако, похоже, что системные зависимости являются транзитивными, что делает их очень не похожими на предоставляемые, и теперь вызывает много недостающих зависимостей в моей сборке. У меня двоякий вопрос:

  1. Является ли область действия системы переходной? Если да, то ссылка на Maven неверна или неполна?
  2. Есть ли способ сделать зависимости транзитивными, не упаковывая их в окончательную сборку?

1 Ответ

2 голосов
/ 02 октября 2012

Транзитивные зависимости всегда будут частью сборки.Нет смысла утверждать ваше намеренное поведение.

Вопрос в том, почему проект, который предназначен для включения в другие проекты (как вы заявили с намерением иметь переходные зависимости), является сборкой?Обычно проект с WAR-сборкой не включается в качестве зависимости в другие проекты (WAR-зависимости вообще не предоставляют своих транзитивных зависимостей, поскольку они предназначены только для наложений WAR).

Если этоmaven сборка это просто.Плагин Maven Assembly имеет «исключение» для фильтрации файлов, которые должны быть скопированы.

Если это будет WAR-проект, вы можете исключить некоторые JAR-файлы из WAR с такими исключениями:

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
      <packagingExcludes>WEB-INF/lib/*-[toExclude1]-*.jar,WEB-INF/lib/[toExclude2]*.jar</packagingExcludes>
  </configuration>
</plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...