2009-08-13 22 views
5

Ich habe versucht, Maven zu verwenden, um ein Projekt zu bauen. Das Projekt baut auf einigen Computern gut auf, die ich ausprobiert habe, aber auf einer Maschine habe ich ein zufälliges Problem.Unbekannte Abhängigkeit in Maven Build

Im Wesentlichen sucht Maven nach einer Abhängigkeit, die nicht in der Datei pom.xml oder in der Datei settings.xml enthalten ist.

Ich habe versucht, mvn Abhängigkeit: Purge-Local-Repository, aber immer noch keinen Nutzen; Ich bin immer noch bei mvn fest auf der Suche nach einer Abhängigkeit Ich habe keine Ahnung, wo es herkommt.

Antwort

12

Wenn Sie mvn Abhängigkeit ausführen: Baum auf Ihrem Projekt sehen Sie, wo die unerwünschte Abhängigkeit eingeführt wird, können Sie dann die Abhängigkeit ausschließen.

Dies ist ein Beispiel für die Ausgabe:

[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 

eine Abhängigkeit auszuschließen, Sie so etwas tun würde:

<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> 

Für weitere Einzelheiten über die Abhängigkeit Plugin die documentation sehen.

Weitere Informationen zu Ausschlüssen finden Sie unter guide.

Update: Sie können auch das m2eclipse Plugin verwenden, um eine grafische Struktur der Abhängigkeiten oder als Grafik zu generieren. 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 Abhängigkeiten transitive Abhängigkeiten haben können (Abhängigkeiten von Abhängigkeiten), so dass selbst wenn etwas nicht explizit in der POM erklärt, kann Maven es noch gehen müssen, finden.

Laufen mvn Abhängigkeit: Baum sollte Ihnen helfen, das Problem zu diagnostizieren, wie Rich Seller beschreibt; Es kann Ihnen auch helfen, es auf den anderen Computern auszuführen, auf denen Sie das Problem nicht haben, und die Ausgabe zu vergleichen.

purge-local-repository wird nicht wirklich helfen Ihnen viel in dieser Hinsicht; Alles, was das tut, ist Artefakte aus Ihrem lokalen Repo zu entfernen, falls einer von ihnen beschädigt ist. Wenn Maven versucht, eine Abhängigkeit zu erhalten, die nicht im lokalen Repo liegt, hilft das nicht viel.