2011-10-31 24 views
26

Pracuję nad dużymi projektami z wieloma plikami pom.xml i muszę określić wszystkie biblioteki, których używam. Oznacza to, że muszę pobierać rekurencyjnie pliki pom.xml i uzyskać identyfikator groupId, artifactId, scope i wersję. Sprawdziłem zależność mvn: drzewo, ale nie mogę znaleźć sposobu na wydrukowanie go do pliku w czytelnym formacie. Widziałem appendOutput, ale nie widziałem żadnego przykładu, jak go używać w cmd. Widziałem rozwiązania wykonane w Linuksie, ale mam tylko dostęp do systemu Windows XP.Jak uzyskać zależności Maven wydrukowane w pliku w czytelnym formacie?

Odpowiedz

53

To może (przynajmniej teraz) zrobić z opcjami wiersza poleceń do zależności: wtyczka drzewa.

Spróbuj:

mvn dependency:tree -Doutput=/path/to/file 

referencyjny: Maven Dependency Plugin Page

Wystarczy tylko poprosił o formacie "czytelny", ale można również przekazać parametr -DoutputType z różnymi opcjami. pamiętać, że wersja Mam zainstalowany również, pojawia się następujące ostrzeżenie:

[WARNING] The parameter output is deprecated. Use outputFile instead. 

Więc uważają próbuje go -DoutputFile =/ścieżka/do/pliku

również, że nie był w stanie uzyskać - DoutputType Paramater, aby dać mi coś innego niż domyślny tekst, ale nie miał okazji się z nim bawić. YMMV.

+1

-Dmdep.outputFile = – AndyS

+0

-Dmdep.outputFile =/path/to/file.txt działało, wszystkie pozostałe opcje nie działały – sloven

0

Zawsze można zainstalować MinGW and MSYS a następnie użyj przykłady Linux używając dependency:tree w Windows

0

Może effective-pom (w połączeniu z niektórych poleceń Linux dla zapisywania pliku) może być wystarczający dla Twoich potrzeb.

3

Dodanie wtyczki

<plugin> 
    <groupId>org.apache.servicemix.tooling</groupId> 
    <artifactId>depends-maven-plugin</artifactId> 
</plugin> 

produkuje plik classes/META-INF/maven/dependencies.properties z projektem Zależności łatwo parsowalnym.

Przykład wyjścia produkowanego:

# Project dependencies generated by the Apache ServiceMix Maven Plugin 
# Generated at: Mon Oct 10 17:43:00 CEST 2011 

groupId = my.group.name 
artifactId = my.artifact.name 
version = 0.0.1-SNAPSHOT 
my.group.name/my.artifact.name/version = 0.0.1-SNAPSHOT 

# dependencies 

junit/junit/version = 4.8 
junit/junit/type = jar 
junit/junit/scope = test 

org.easymock/easymock/version = 2.4 
org.easymock/easymock/type = jar 
org.easymock/easymock/scope = test 
4

na GNU/Linux Chciałbym po prostu zrobić mvn dependency:tree > myFile. Jednakże, jeśli jesteś ograniczony do systemu Windows, wtedy szukałbym składni systemu Windows do przesyłania strumieniowego danych wyjściowych polecenia.

Zgodnie z this site (tylko najlepsze wyniki od Google) wydaje się, że konsola systemu Windows używa również znaku > do kierowania strumienia wyjściowego do pliku. Więc mógłbyś spróbować?

+3

Polecenie jest takie samo dla Windows. –

+0

> pochodzi z POSIX. W systemie Windows działa dobrze – kingoleg

1

Jeśli masz wiele modułów w ramach tego samego repo/projektu i chcesz zależności wszystkich modułów w jednym pliku, tak aby móc odróżnić b/w jedną kompilację i drugą, aby zobaczyć, czy coś gdzieś się zmieniło, możesz do

$project_dir> mvn dependency:tree -DoutputFile=<absolute_path_to_file> -DappendOutput=true 

np.

$project_dir> mvn dependency:tree -DoutputFile=`pwd`/mvn_dependency_tree.txt -DappendOutput=true 

Zobacz inne opcje dostępne w https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

Powiązane problemy