2015-04-02 5 views
6

Zmieniono używaną wersję maven-dependency-plugin z 2.8 na 2.10. Teraz, kiedy biegnę mvn dependency:tree -Dverbose widzę następujące ostrzeżenie:"Używanie drzewa zależności Maven 2 do uzyskania szczegółowego wyniku, który może być niezgodny z rzeczywistą rozdzielczością Maven 3"

[WARNING] Using Maven 2 dependency tree to get verbose output, which may be inconsistent with actual Maven 3 resolution 

The wersję Maven używam jest

Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T18:37:52+01:00) 
  • mogę to naprawić lub uniknąć go byle jak?
  • Czy zawsze było tak, że Maven 2 był używany dla wyjścia -Dverbose, ale dopiero teraz dodano ostrzeżenie?
+0

Czy próbowałeś odtworzyć go na nowszym maven 3.2.5? Nie dostałem ostrzeżenia na temat maven 3.2.5 i dependency-plugin 2.10 – andrii

Odpowiedz

7

Wyjaśnienie do tego problemu można znaleźć w official documentation:

rozwlekłe czy uwzględnić pominięte węzły w odcinkach drzewa zależności. Zauważ tę funkcję rzeczywiście wykorzystuje algorytm Maven 2 i może dać błędne wyniki w przypadku korzystania z Maven 3.

Wystarczy popatrzeć na linii 245 TreeMojo.java dla wersji 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)); 
} 

To rzeczywiście drukuje ostrzeżenie, jeśli maven 2 nie jest używany.

Spójrzmy teraz na linii 243 z TreeMojo.java dla wersji 2.8: rejestrowanie

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

Ostrzeżenie nie istnieją, więc:

Czy to zawsze jest tak, że Maven 2 użyto - Wyjście Dverbose, ale dopiero teraz dodali ostrzeżenie?

Tak, ostrzeżenie zostało dodane od wersji 2.8.

Czy mogę to naprawić, czy też tego uniknąć?

Zgaduję, że nie, to znaczy bez ignorowania komunikatów ostrzegawczych lub edycji kodu źródłowego.

Jednak, jak widać, funkcjonalność Maven 2 była już używana w wersji 2.8. Mam nadzieję, że pozbędziesz się go w późniejszych wersjach, kiedy będą migrować dependency:tree -Dverbose, aby użyć funkcji maven 3.

Powiązane problemy