Как сообщить maven-dependency-plugin, что артефакт используется в проекте?

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

/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 действительно нужны эти зависимости. Как я могу решить проблему?


person yegor256    schedule 07.02.2011    source источник
comment
Зачем добавлять еще один модуль, который управляет зависимостями, когда управление зависимостями осуществляется Maven? Это самая сильная сторона Maven   -  person Boris Pavlović    schedule 07.02.2011


Ответы (2)


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

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

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

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

person Community    schedule 07.02.2011
comment
Хорошая идея, но результат тот же :( - person yegor256; 07.02.2011
comment
@ yegor256 Я только что отредактировал свой ответ. В задаче анализа есть флаг «ignoreNonCompile», вам может потребоваться установить его. - person ; 07.02.2011
comment
Странно 'ignoreNonCompile' по умолчанию не имеет значения true. - person Leif Gruenwoldt; 09.09.2013
comment
Мне интересно, как выполняется анализ для области выполнения. Документы только говорят: все, что не попадает в байт-код, не обнаруживается. Это относится, например, к константам, аннотациям с политикой хранения исходного кода или ссылкам javadoc. Но все же интересно, как это вообще работает во время выполнения. - person Ruslan; 20.09.2017

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

person crowne    schedule 07.02.2011