如何告诉maven-dependency-plugin工件中使用了工件?

yeg*_*256 8 java maven-2 maven-dependency-plugin

这是我的多模块项目的结构:

/root
  /api dependencies: slf4j
  /foo dependencies: slf4j-log4j12, log4j
Run Code Online (Sandbox Code Playgroud)

换句话说,模块api使用slf4j的日志记录.它不知道日志工具的实现是什么.模块foo添加slf4j-log4j12log4j执行日志记录.很简单.

现在我正在运行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
Run Code Online (Sandbox Code Playgroud)

意味着插件不理解foo真正需要这些依赖项.我该如何解决这个问题?

小智 10

如果您为这些依赖项提供runtime范围而不是compile

如果你已经将它们定义为编译时依赖项,我认为依赖插件会认为它们在编译时需要它们才真正没有.但是在运行时只需要slf4-log4j和log4j JAR文件.

编辑:您可能需要设置ignoreNonCompile选项:

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