Как сказать maven-dependency-plugin, что артефакт используется в проекте? - PullRequest
8 голосов
/ 07 февраля 2011

Это структура моего многомодульного проекта:

/root
  /api dependencies: slf4j
  /foo dependencies: slf4j-log4j12, log4j

Другими словами, модуль api использует slf4j для целей регистрации. Он не знает, какова будет реализация средства ведения журнала. Модуль foo добавляет slf4j-log4j12 и log4j для реализации ведения журнала. Довольно просто.

Теперь я использую maven-dependency-plugin:analyze-only, и это то, что сказано для модуля foo:

[WARNING] Unused declared dependencies found:
[WARNING]    org.slf4j:slf4j-log4j12:jar:1.6.1:compile
[WARNING]    log4j:log4j:jar:1.2.16:compile

Это означает, что плагин не понимает, что foo действительно нуждается в этих зависимостях. Как я могу решить проблему?

Ответы [ 2 ]

10 голосов
/ 07 февраля 2011

Что произойдет, если вы дадите этим зависимостям область действия runtime вместо compile?

Если вы определили их как зависимости во время компиляции, я думаю, что плагин зависимостей будет думать, что они необходимы для компиляции, когда их на самом деле нет. Но вам нужны только файлы JAR slf4-log4j и log4j во время выполнения.

Редактировать: Возможно, вам потребуется установить параметр ignoreNonCompile:

http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html

0 голосов
/ 07 февраля 2011

Вы пытались установить область действия slf4j-log4j12 и log4j во время выполнения?
См. область зависимостей maven

...