Odpowiedzi:
Utwórz prosty projekt tylko z pom.xml. Dodaj swoją zależność i uruchom:
mvn dependency:tree
Niestety zależność mojo musi używać pom.xml lub pojawia się następujący błąd:
Nie można wykonać mojo: tree. Wymaga projektu z istniejącym pom.xml, ale kompilacja go nie używa.
Zależności są opisane w pom.xml twojego artefaktu. Znajdź go za pomocą infrastruktury maven.
Przejdź do http://search.maven.org/ i wprowadź swój groupId oraz artifactId.
Lub możesz przejść do http://repo1.maven.org/maven2/ i nawigować najpierw za pomocą plugins groupId, później używając artifactId i wreszcie używając jego wersji.
Na przykład zobacz org.springframework: spring-core
Częścią artefaktu zależności jest plik pom.xml. To określa jego zależność. I możesz wykonać zależność mvn: tree na tym pom.
pom.xml
plikami) może wystąpić błąd. Spróbuj mvn compile dependency:tree
więc.
Jeśli zawracasz sobie głowę tworzeniem przykładowego projektu i dodaniem do niego zależności od innej firmy, możesz uruchomić następujące czynności, aby zobaczyć pełną hierarchię zależności.
Możesz wyszukać konkretny artefakt za pomocą tego polecenia maven:
mvn dependency:tree -Dverbose -Dincludes=[groupId]:[artifactId]:[type]:[version]
Zgodnie z dokumentacją:
gdzie każdy segment wzoru jest opcjonalny i obsługuje pełne i częściowe * symbole wieloznaczne. Pusty segment wzoru jest traktowany jako niejawny symbol wieloznaczny.
Wyobraź sobie, że próbujesz znaleźć plik jar „log4j-1.2-api” w różnych modułach projektu:
mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-1.2-api
więcej informacji można znaleźć tutaj .
Edycja: pamiętaj, że pomimo zalet używania parametru pełnego , może nie być tak dokładny w niektórych warunkach. Ponieważ używa algorytmu Maven 2 i może dawać nieprawidłowe wyniki, gdy jest używany z Maven 3.
-Dverbose
wystarczyło, aby pokazać mi całe drzewo, którego potrzebowałem. Przekierowanie wyjścia do less
lub includes
czegoś podobnego i wykonanie szybkiego wyszukiwania działa świetnie, jeśli nie pamiętasz flagi lub nie chcesz podawać pełnej lub wieloznacznej groupId
:)
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:tree (default-cli): Goal requires a project to execute but there is no POM in this directory (...). Please verify you invoked Maven from the correct directory. -> [Help 1]
Rozwiązaniem jest wywołanie zależności: drzewo z plikiem pom.xml artefaktu:
mvn -f "$HOME/.m2/repository/$POM_PATH" dependency:tree
Zobacz także Jak wyświetlić listę zależności przechodnich artefaktu z repozytorium?
Jeśli używasz aktualnej wersji m2eclipse (co powinieneś zrobić, jeśli używasz eclipse i maven):
Wybierz pozycję menu
Navigate -> Open Maven POM
i wejdź do poszukiwanego artefaktu.
Pom otworzy się w edytorze pom, z którego możesz wybrać zakładkę, Dependency Hierarchy
aby wyświetlić hierarchię zależności (jak sugeruje nazwa :-))
Jeśli twój artefakt nie jest zależny od danego projektu, najlepiej jest skorzystać z wyszukiwarki repozytorium . Wiele z nich opisuje zależności danego artefaktu.
Jeśli chcesz uzyskać graficzną reprezentację drzewa zależności z możliwością wyszukiwania (w tym wszystkie moduły z projektu, zależności przechodnie i informacje o eksmisji), sprawdź UpdateImpact: https://app.updateimpact.com (bezpłatna usługa).
Zastrzeżenie: jestem jednym z twórców strony
Wiem, że ten post jest dość stary, ale mimo to, jeśli ktoś używający IntelliJ chce zobaczyć drzewo zależności bezpośrednio w IDE, może zainstalować wtyczkę Maven Helper Plugin .
Po zainstalowaniu otwórz pom.xml i zobaczysz zakładkę Analiza zależności , jak poniżej. Zapewnia również opcję zobaczenia zależności, które są w konflikcie, a także jako struktury drzewa.