2015-04-02 12 views
6

我已將使用版本maven-dependency-plugin從2.8更改爲2.10。現在,當我運行mvn dependency:tree -Dverbose我看到下面的警告:「使用Maven 2依賴關係樹獲取詳細輸出,這可能與實際的Maven 3分辨率不一致」

[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,但是現在他們已經添加了警告?
+0

您是否試圖在較新的maven 3.2.5上重現它?我沒有得到maven 3.2.5和dependency-plugin 2.10的警告 – andrii 2015-04-02 09:21:25

回答

7

的解釋,您的問題可以在official documentation發現:

詳細是否包含省略了序列化的依賴關係樹的節點。請注意,這個功能實際使用Maven 2的算法,並可能給錯誤的結果與Maven使用時3

看一看線TreeMojo.java 245 2.10版本:

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。

現在看線TreeMojo.java 243 2.8版本:

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功能。