这是我的多模块项目的结构:
/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
确实需要这些依赖项。我该如何解决这个问题呢?
答案 0 :(得分:10)
如果您为这些依赖项提供runtime
范围而不是compile
,会发生什么?
如果你已经将它们定义为编译时依赖项,我认为依赖插件会认为编译时需要它们,而实际上并非如此。但是你只需要在运行时使用slf4-log4j和log4j JAR文件。
修改:您可能需要设置ignoreNonCompile
选项:
http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html
答案 1 :(得分:0)
您是否尝试将slf4j-log4j12
和log4j
的范围设置为运行时?
见maven dependency scope