Maven peut-il être rendu moins verbeux?

104

Maven crache beaucoup trop de lignes de sortie à mon goût (j'aime la méthode Unix: aucune nouvelle n'est une bonne nouvelle).

Je veux me débarrasser de toutes les lignes [INFO], mais je n'ai trouvé aucune mention d'un argument ou des paramètres de configuration qui contrôlent la verbosité de Maven.

N'existe-t-il pas de méthode similaire à LOG4J pour définir le niveau de journalisation?

Asaf Bartov
la source
2
Avec Maven 3.6.1 (avril 2019, plus de 10 ans plus tard), mvn --no-transfer-progress ...(ou mvn -ntppour les courts métrages) devrait être une solution adéquate. Voir ma réponse ci-dessous .
VonC

Réponses:

132

Vous pouvez essayer le commutateur -q .

-q, - Sortie silencieuse silencieuse - n'affiche que les erreurs

Jorge Ferreira
la source
2
@sheki: Pour clarifier, cette option ne désactive pas les messages de débogage de l'enregistreur - vous devez désactiver cela via les paramètres de l'enregistreur. Par exemple, si vous utilisez logback, inclure un fichier src / test / resources / logback-test.xml dans votre projet vous permettra de personnaliser votre niveau de journalisation sur «off» pendant la phase de test. Cela nettoiera tout.
codeturner
10
Mon problème est que -qc'est trop calme. J'exécute maven sous CI et je veux voir les étapes à suivre (pour suivre la progression), mais les indicateurs de téléchargement gâchent l'affichage non ANSI. Existe-t-il un moyen de désactiver uniquement les indicateurs de progression du téléchargement?
Guss le
6
@Guss: Si vous ne voulez que les messages de téléchargement / téléchargement disparaissent, utilisez -Bpour activer le mode batch (vous devriez l'avoir de toute façon dans votre système CI!), Puis définissez MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"pour supprimer les informations de progression pour les téléchargements.
ankon
1
Dans maven 3.5.x, j'ai besoin d'activer --batch-mode( -B) pour que l' -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warnastuce fonctionne.
Auke
si vous êtes enclin j'ai soumis une proposition de solution compatible avec le mode interactif issues.apache.org/jira/browse/MNG-6605 , github.com/apache/maven/pull/239
Ray
27

-q comme indiqué ci-dessus est ce dont vous avez besoin. Une alternative pourrait être

-B , --batch-mode Exécution en mode non interactif (batch) Le mode batch est essentiel si vous devez exécuter Maven dans un environnement d'intégration continue et non interactif. Lorsqu'il est exécuté en mode non interactif, Maven ne s'arrêtera jamais pour accepter les entrées de l'utilisateur. Au lieu de cela, il utilisera des valeurs par défaut sensibles lorsqu'il aura besoin d'une entrée.

Et réduira également les messages de sortie plus ou moins à l'essentiel.

Stanislav
la source
il est utilisé pour le mode non interactif, ce qui aide lors de l'automatisation des exécutions
Stanislav
22

Mon problème est que -q est trop silencieux. J'utilise maven sous CI

Avec Maven 3.6.1 (avril 2019) , vous avez désormais la possibilité de supprimer la progression du transfert lors du téléchargement / téléchargement en mode interactif .

mvn --no-transfer-progress ....

ou en bref:

mvn -ntp ... ....

C'est ce que Ray a proposé dans les commentaires avec MNG-6605 et PR 239 .

VonC
la source
Cette solution supprime les messages de téléchargement ainsi que les téléchargements, ce qui n'est généralement pas souhaité dans une deploytâche
Hilikus
6

Utilisez les options de ligne de commande -q ou --quiet

Sietse
la source
2

Si vous voulez seulement vous débarrasser des [INFO]messages, vous pouvez également faire:

mvn ... | fgrep -v "[INFO]"

Pour supprimer toutes les sorties (sauf les erreurs), vous pouvez rediriger stdoutvers /dev/nullavec:

mvn ... 1>/dev/null

(Cela ne fonctionne que si vous utilisez bash(ou des shells similaires) pour exécuter les commandes Maven.)

m13r
la source
0

Maven 3.1.x utilise SLF4j pour la journalisation, vous pouvez trouver des instructions pour le configurer sur https://maven.apache.org/maven-logging.html

En bref: soit modifier ${MAVEN_HOME}/conf/logging/simplelogger.properties ou définissez les mêmes propriétés via la MAVEN_OPTSvariable d'environnement.

Par exemple: le paramètre MAVEN_OPTSsur -Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rnconfigure la journalisation de l'écouteur de transfert en mode batch et -Dorg.slf4j.simpleLogger.defaultLogLevel=warndéfinit le niveau de journalisation par défaut.

Ankon
la source
0

La réponse existante vous aide à filtrer en fonction du niveau de journalisation en utilisant --quiet. J'ai trouvé que de nombreux messages INFO sont utiles pour le débogage, mais les messages de téléchargement des journaux d'artefacts tels que les suivants étaient bruyants et inutiles.

Downloading: http://nexus:8081/nexus/content/groups/public/org/apache/maven/plugins/maven-compiler-plugin/maven-metadata.xml

J'ai trouvé cette solution:

https://blogs.itemis.com/en/in-a-nutshell-removing-artifact-messages-from-maven-log-output

mvn clean install -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
errant.info
la source