2015-04-02 1 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

ответ

7

Объяснение вашей проблемы можно найти в official documentation:

многословные ли включать опущенные узлы в дереве сериализованном зависимостей. Обратите внимание на эту функцию, на самом деле использует алгоритм Maven 2 и может дать неверные результаты при использовании Maven 3.

Посмотрите на линии 245 из TreeMojo.java для версии 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 не используется.

Теперь посмотрим на линии 243 из TreeMojo.java для версии 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.

Смежные вопросы