Mavenの冗長性を低くすることはできますか?


104

Mavenは出力の行数が多すぎて私の好みになりません(私はUnixの方法が好きです。ニュースがないのは良いニュースです)。

すべての[INFO]行を削除したいのですが、Mavenの冗長性を制御する引数または構成設定についての言及が見つかりませんでした。

ログレベルを設定するLOG4Jのような方法はありませんか?


2
Maven 3.6.1(2019年4月、10年以上後)の場合mvn --no-transfer-progress ...(またはmvn -ntpショートパンツの場合)は適切なソリューションです。以下の私の答えを参照しください。
VonC、

回答:


132

-qスイッチを試すことができます。

-q、-quiet静かな出力-エラーのみを表示


2
@sheki:明確にするために、このオプションはロガーのデバッグメッセージを無効にしません-ロガーの設定でオフにする必要があります。たとえば、logbackを使用している場合、src / test / resources / logback-test.xmlファイルをプロジェクトに含めると、テスト段階でロギングレベルを「オフ」にカスタマイズできます。これですべてがクリーンアップされます。
codeturner 2013年

10
私の問題は、それ-qが静かすぎることです。CIでMavenを実行していて、(進行状況を追跡するために)手順を確認したいのですが、ダウンロードインジケーターがANSI以外の表示を混乱させています。ダウンロードの進行状況インジケーターのみをオフにする方法はありますか?
Guss

6
@Guss:ダウンロード中/ダウンロード済みのメッセージのみを削除する場合は、を使用-Bしてバッチモードを有効にし(いずれにしてもCIシステムにそれがあるはずです!)、MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"ダウンロードの進行状況情報を強制終了するように設定します。
ankon

1
Maven 3.5.xでは、トリックを機能させるために--batch-mode-B)を有効にする必要があり-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warnます。
Auke、

傾向がある場合、インタラクティブモードの問題と互換性のある提案されたソリューションを提出しました。apache.org / jira
Ray

27

上記の-qが必要です。代替案は

-B、-- batch-mode 非対話型(バッチ)モードで実行Mavenを非対話型の継続的統合環境で実行する必要がある場合は、バッチモードが不可欠です。非インタラクティブモードで実行している場合、Mavenはユーザーからの入力を受け入れるために停止することはありません。代わりに、入力が必要なときに適切なデフォルト値を使用します。

また、出力メッセージを本質的に削減します。


自動実行時に役立つ非インタラクティブモードで使用されます
スタニスラフ

22

私の問題は、-qが静かすぎることです。CIの下でmavenを実行しています

Maven 3.6.1(2019年4月)、あなたが今持っているのダウンロード/アップロードを対話モードで転送進行を抑制するためのオプションを

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

要するに:

mvn -ntp ... ....

それはレイMNG-6605PR 239のコメントで提案したものです。


このソリューションは、アップロードメッセージとダウンロードを抑制します。ダウンロードは通常、deployタスクでは望ましくありません
Hilikus



2

[INFO]メッセージのみを削除したい場合は、次のようにすることもできます。

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

すべての出力(エラーを除く)を抑制するには次のようにリダイレクトstdoutします/dev/null

mvn ... 1>/dev/null

(これはbash、Mavenコマンドを実行するために(または類似のシェル)を使用する場合にのみ機能します。)


0

Maven 3.1.xはSLF4jをロギングに使用します。https://maven.apache.org/maven-logging.htmlでSLF4jを構成する手順を見つけることができます

つまり${MAVEN_HOME}/conf/logging/simplelogger.properties、を変更するか、MAVEN_OPTS環境変数を介して同じプロパティを設定します。

例:バッチモード転送リスナーのロギングMAVEN_OPTS-Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rn構成し-Dorg.slf4j.simpleLogger.defaultLogLevel=warn、デフォルトのログレベルを設定する設定。


0

既存の回答は、を使用してログレベルに基づいてフィルタリングするのに役立ちます--quiet。多くのINFOメッセージがデバッグに役立つことがわかりましたが、次のようなアーティファクトログメッセージのダウンロードはノイズが多く、役に立ちませんでした。

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

私はこの解決策を見つけました:

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.