MavenがINFOメッセージを表示しないようにしたいのですが、警告とエラー(ある場合)だけを表示したいと思います。
どうすれば、できればmavenを呼び出すコマンドラインを変更して、これを実現できますか?
MavenがINFOメッセージを表示しないようにしたいのですが、警告とエラー(ある場合)だけを表示したいと思います。
どうすれば、できればmavenを呼び出すコマンドラインを変更して、これを実現できますか?
回答:
解決策にも興味があるので、簡単な調査を行いました。
http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-optionによると
現在、maven 3.1.xはSLF4Jを使用してSystem.outにログインします。次のファイルでログ設定を変更できます。
${MAVEN_HOME}/conf/logging/simplelogger.properties
ページによると:http : //maven.apache.org/maven-logging.html
次のように、コマンドラインパラメータを使用して、シンプルなロガーのデフォルトのログレベルを設定できるはずです。
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
しかし、私はそれを機能させることができませんでした。これに関する唯一の問題は、mavenがクラスパスの構成ファイルからデフォルトレベルを取得することです。System.propertiesを介して他の設定もいくつか試しましたが、すべて失敗しました。
githubのslf4jのソースはここにあります:slf4j github
ここでsimpleloggerのソース:slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
神経叢ローダーがをロードしsimplelogger.properties
ます。
simplelogger.properties
変更作業を?org.slf4j.simpleLogger.warnLevelString
設定を変更すると、mvn compile
更新が適切に更新されますが、org.slf4j.simpleLogger.defaultLogLevel
設定が無視されているようです。また、警告またはエラーに設定した場合でも、情報レベルでログに記録します。
mvn validate clean install | egrep -v "(^\[INFO\])"
または
mvn validate clean install | egrep -v "(^\[INFO\]|^\[DEBUG\])"
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[DEBUG\]"
mvn validate clean install | findstr /V /B "\[INFO\]" | findstr /V /B "\[WARN\]"
findstr
正規表現およびより簡潔になる可能性のあるその他のオプションをサポートしているようです-ss64.com/nt/findstr.html
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
たとえば、MAVEN_OPTSを使用してこれを実現できます。
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
システムプロパティをコマンドラインに直接入力するのではなく、(少なくともMaven 3.3.1の場合。)
すべてのMaven呼び出しでログインのロギングを変更~/.mavenrc
するMAVEN_OPTS
場合は、設定に使用することを検討してください。
help:evaluate
値をproject.version
出力するためにターゲットを実行している間、いくつかの警告を無効にしようとしていましたが、この出力(通過していないようですがslf4j
)もオフになりました。
Logbackを使用している場合は、このlogback-test.xml
ファイルをsrc/test/resources
ディレクトリに配置します。
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
コマンドライン自体で以下を使用してこれを達成できます
-e for error
-X for debug
-q for only error
例:
mvn test -X -DsomeProperties='SomeValue' [For Debug level Logs]
mvn test -e -DsomeProperties='SomeValue' [For Error level Logs]
mvn test -q -DsomeProperties='SomeValue' [For Only Error Logs]
残念ながら、maven 3を使用する場合でも、ソースコードにパッチを適用することが唯一の方法です。
これは、その方法の簡単な説明です。
Maven 3リポジトリのクローンまたはフォーク: "git clone https://github.com/apache/maven-3.git "
org.apache.maven.cli.MavenCli#loggingを編集して、
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
に
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
現在のスナップショットバージョンでは270行目です
次に、「mvn install」を実行すると、新しいmavenディストリビューションが「apache-maven \ target \」フォルダーに配置されます
参照については、この差分を参照してください:https : //github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()
する必要があります-構成可能性を備えている場合。
最も簡単な方法は、サポートを利用するためにMaven 3.3.1以降にアップグレードすることです${maven.projectBasedir}/.mvn/jvm.config
。
次に、MavenのSL4FJのSimpleLoggerサポートのオプションを使用して、すべてのロガーまたは特定のロガーを構成できます。たとえば、次のwarn
ように、ログに記録するように構成されているPMDを除いて、レベルですべての警告を作成する方法を示しますerror
。
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
参照してくださいここで Mavenを持つログの詳細については。
maven sunfireプラグインの 2.20.1バージョンを使用すると、すべての警告がダンプストリームファイルに書き込まれることに気付きました。例えば/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-mode
または-q
ようになりますmvn
それほど冗長。