Как вывести зависимости Maven в файл в читаемом формате? - PullRequest
31 голосов
/ 31 октября 2011

Я работаю над большими проектами со многими файлами pom.xml, и мне нужно указать все библиотеки, которые я использую. Это означает, что мне нужно рекурсивно читать файлы pom.xml и получать groupId, artifactId, scope и version. Я проверил mvn зависимость: дерево, но я не могу найти способ напечатать его в файл в читаемом формате. Я видел appendOutput, но я не видел пример того, как использовать его в cmd. Я видел некоторые решения, сделанные в Linux, но у меня есть доступ только к Windows XP.

Ответы [ 6 ]

65 голосов
/ 31 июля 2012

Это можно сделать (по крайней мере сейчас) с помощью параметров командной строки для зависимости: плагин дерева.

Попробуйте:

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

Ссылка: Страница плагина зависимости Maven

Вы спрашивали только о «читаемом» формате, но вы также можете передать параметр -DoutputType с различными параметрами.Также обратите внимание, что в версии, которую я установил, я получаю следующее предупреждение:

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

Итак, рассмотрите возможность попробовать это с -DoutputFile = / path / to / file

Также я не смогчтобы получить параметр -DoutputType, чтобы он дал мне что-то кроме текста по умолчанию, но у него не было возможности поиграть с ним.YMMV.

4 голосов
/ 01 ноября 2011

В GNU / Linux я бы просто сделал mvn dependency:tree > myFile. Однако, если вы ограничены только Windows, я бы искал синтаксис Windows для потоковой передачи вывода команды.

Согласно этому сайту (просто топ-результаты от Google) кажется, что консоль Windows также использует знак > для направления потока вывода в файл. Так не могли бы вы попробовать это?

4 голосов
/ 31 октября 2011

Добавление

<plugin>
    <groupId>org.apache.servicemix.tooling</groupId>
    <artifactId>depends-maven-plugin</artifactId>
</plugin>
Плагин

создает файл classes/META-INF/maven/dependencies.properties с легко разбираемыми зависимостями проекта.

Пример полученной продукции:

# 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
3 голосов
/ 13 марта 2017

Если у вас есть несколько модулей в одном репо / проекте и вы хотите, чтобы зависимости всех модулей были в одном файле, чтобы иметь возможность различать ч / б одну сборку и другую, чтобы увидеть, что-то где-то изменилось, вы можете сделать

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

, например

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

См. Другие опции, доступные на https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

0 голосов
/ 31 октября 2011

Возможно ffective-pom (в сочетании с некоторыми командами linux для сохранения файла) может быть достаточно для ваших нужд.

0 голосов
/ 31 октября 2011

Вы всегда можете установить MinGW и MSYS , а затем использовать примеры Linux, используя dependency:tree в Windows

...