Подтвердить что ты не робот

Как получить зависимости Maven в файле в читаемом формате?

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

4b9b3361

Ответ 1

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

Try:

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

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

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

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

Итак, рассмотрите попытку с помощью -DoutputFile =/path/to/file

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

Ответ 2

Добавление

<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

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

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

Ответ 4

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

$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

Ответ 5

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

Ответ 6

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

Ответ 7

Я выполнил приведенную ниже команду и получил файл со всеми зависимостями maven.

mvn dependency:tree -DoutputFile=temp/mvn_dependency_tree.txt

Эта команда создаст папку с именем "temp", и внутри этой папки будет создано имя файла mvn_dependency_tree.txt со всеми зависимостями.