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

时间:2015-04-02 09:06:54

标签: 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

我正在使用的Maven版本是

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

1 个答案:

答案 0 :(得分:10)

您可以在official documentation

找到问题的解释
  

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 ) );
}

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

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

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

那里不存在警告记录,所以:

  

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

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

  

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

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

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