Выполнить цель maven без проекта

#java #maven

#java #maven

Вопрос:

У меня есть некоторая автоматизация, которая использует mvn для загрузки артефактов в локальную файловую систему, чтобы их можно было использовать за пределами maven. В принципе, я делаю что-то вроде этого:

 #!/bin/bash
mvn dependency:get 
    -DgroupId="my.group.id" 
    -DartifactId="$1" 
    -Dversion="$2" 
    -Dpackaging="war" 
    -DremoteRepositories="http://my.repo/nexus/content/repositories/foo"
  

Проблема (и это не на самом деле проблема) заключается в том, что я получаю следующий вывод:

 [INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building some-other-project 1.2.7-SNAPSHOT
[INFO] ------------------------------------------------------------------------
  

Если мне случится запустить это из подпапки some-other-project . Это сбивает с толку человека, выполняющего этот скрипт, поскольку dependency:get выполнение фактически не создает проект. Если не считать захвата и обработки выходных данных для удаления этой информации, есть ли простой способ сообщить mvn , что он просто запускает цель без связанного проекта?

Ответ №1:

Вы можете подавить весь INFO вывод, передав --quiet флаг (или -q ).

Если вы хотите сохранить некоторые INFO , отбросив остальные, вы можете определить все компоненты, которые вы хотели бы отключить, выполнив поиск в Maven github и настроить свойства ведения журнала, чтобы исключить их.

Например. вы можете добавить следующий флаг: -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.event.ExecutionEventLogger=ERROR для этого Scanning for projects... сообщения.

Комментарии:

1. Мне нужна INFO информация, чтобы мои пользователи знали, что что -то происходит (учитывая, что загрузка может занять некоторое время, если артефакт большой). Просто не хочу, чтобы он лгал о том, что он делает…

2. @Lucas обновил ответ с учетом этого случая / logging.properties

3. Вау! Идеальный. Большое вам спасибо!

Ответ №2:

Если есть pom.xml , он всегда будет использоваться; он может содержать дополнительную информацию для maven-dependency-plugin. Так что нет, нет возможности игнорировать это Building ... сообщение. Даже попытка сослаться на несуществующий pom-файл ( -f no-pom.xml ) не помогает, потому что Maven теперь предполагает, что этот файл существует.