2009-08-13 21 views
5

Próbowałem użyć Mavena do zbudowania projektu. Projekt działa dobrze na kilku komputerach, które wypróbowałem, ale na jednej maszynie, mam losowy problem.Nieznana zależność Przychodzące w Maven Buduj

Zasadniczo maven szuka zależności, która nie jest zawarta w pliku pom.xml lub w pliku settings.xml.

Próbowałem zależności mvn: purge-local-repository, ale nadal bez skutku; Nadal utknąłem na mvn, szukając zależności, z której nie mam pojęcia, skąd się ona bierze.

Odpowiedz

12

Jeśli uruchomisz zależność mvn: drzewo na projekcie zobaczysz, gdzie wprowadzana jest niechciana zależność, możesz następnie wykluczyć tę zależność.

To jest przykład wyjścia:

[INFO] [dependency:tree] 
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT 
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile 
[INFO] \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile 
[INFO]  \- velocity:velocity:jar:1.4:compile 

Aby wykluczyć zależność, można zrobić coś takiego:

<dependency> 
    <groupId>sample.ProjectA</groupId> 
    <artifactId>Project-A</artifactId> 
    <version>1.0</version> 
    <exclusions> 
    <exclusion> <!-- declare the exclusion here --> 
     <groupId>sample.ProjectB</groupId> 
     <artifactId>Project-B</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

więcej szczegółów na wtyczce zależności zobaczyć documentation.

Aby uzyskać więcej informacji na temat wyłączeń, zobacz guide.

Aktualizacja: Możesz również użyć wtyczki m2eclipse, aby wygenerować graficzne drzewo zależności lub jako wykres. dependency tree screenshot http://www.sonatype.com/books/m2eclipse-book/reference/figs/web/eclipse_pom-editor-depend-tree-locate.png dependency graph screenshot http://www.sonatype.com/books/m2eclipse-book/reference/figs/web/eclipse_pom-editor-graph.png

0

Maven zależności mogą mieć przechodnie zależnościami (zależnościami z zależnościami), więc nawet jeśli coś nie jest zadeklarowane jawnie w POM, Maven może nadal trzeba iść go znaleźć.

Uruchomienie Zależność mvn: drzewo powinno pomóc w zdiagnozowaniu problemu, jak opisuje bogaty sprzedawca; może również pomóc w uruchomieniu go na innych komputerach, na których nie występuje problem, i porównać dane wyjściowe.

purge-local-repository tak naprawdę nie pomoże ci w tym zakresie; wszystko, co to robi, to usuwanie artefaktów z lokalnego repo w przypadku, gdy jeden z nich jest uszkodzony. Jeśli maven próbuje uzyskać zależność, której nie ma w lokalnym repozytorium, nie pomoże to w znacznej mierze.

Powiązane problemy