"使用Maven 2依赖树来获取详细输出,这可能与实际的Maven 3分辨率不一致"

wil*_*ilx 8 java maven maven-dependency-plugin

我已将使用的版本maven-dependency-plugin从2.8 更改为2.10.现在,当我跑步时,mvn dependency:tree -Dverbose我看到以下警告:

[WARNING] Using Maven 2 dependency tree to get verbose output, which may be inconsistent with actual Maven 3 resolution
Run Code Online (Sandbox Code Playgroud)

我正在使用的Maven版本是

Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T18:37:52+01:00)
Run Code Online (Sandbox Code Playgroud)
  • 无论如何我可以修理它还是避免它?
  • 是否总是将Maven 2用于-Dverbose输出,但现在他们已经添加了警告?

Mag*_*lex 10

您可以在官方文档中找到对您的问题的解释:

verbose是否在序列化依赖关系树中包含省略的节点.请注意,此功能实际上使用Maven 2算法,并且在与Maven 3一起使用时可能会给出错误的结果.

看一下版本2.10 的TreeMojo.java的第245行:

if ( verbose )
{
    // verbose mode force Maven 2 dependency tree component use
    if ( ! isMaven2x() )
    {
        getLog().warn( "Using Maven 2 dependency tree to get verbose output, "
                           + "which may be inconsistent with actual Maven 3 resolution" );
    }
    dependencyTreeString =
        serializeVerboseDependencyTree( dependencyTreeBuilder.buildDependencyTree( project,
                                                                                   localRepository,
                                                                                   artifactFilter ) );
}
Run Code Online (Sandbox Code Playgroud)

如果不使用maven 2,它实际上会打印警告.

现在查看TreeMojo.java的第243行版本2.8:

if ( verbose )
{
    // verbose mode force Maven 2 dependency tree component use
    dependencyTreeString =
        serializeVerboseDependencyTree( dependencyTreeBuilder.buildDependencyTree( project,
                                                                                   localRepository,
                                                                                   artifactFilter ) );
}
Run Code Online (Sandbox Code Playgroud)

那里不存在警告日志记录,因此:

Maven 2是否一直用于-Dverbose输出,但现在他们只添加了警告?

是的,自2.8版以来已添加警告.

无论如何我可以修理它还是避免它?

我猜不是,这不是忽略警告日志消息,也不是编辑源代码.

但是,如您所见,Maven 2功能已在2.8中使用.希望在迁移dependency:tree -Dverbose到使用maven 3功能时,您将在以后的版本中摆脱它.