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 : 명확히하기 위해,이 옵션은 로거 디버그 메시지를 비활성화하지 않습니다. 로거 설정을 통해 비활성화해야합니다. 예를 들어 로그 백을 사용하는 경우 프로젝트에 src / test / resources / logback-test.xml 파일을 포함하면 테스트 단계에서 로깅 수준을 '꺼짐'으로 사용자 지정할 수 있습니다. 이것은 모든 것을 정리할 것입니다.
codeturner 2013 년

10
내 문제는 -q너무 조용 하다는 것 입니다. CI에서 maven을 실행하고 있으며 진행 상황을 추적하는 데 필요한 단계를보고 싶지만 다운로드 표시기가 비 ANSI 디스플레이를 엉망으로 만들고 있습니다. 다운로드 진행률 표시기 만 끄는 방법이 있습니까?
Guss

6
@Guss : Downloading / Downloaded 메시지 만 사라지게하려면 -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

당신이 원한다면 , 나는
Ray

27

-q 위에서 말한대로 필요한 것입니다. 대안은

-B , --batch-mode 비대화 형 (배치) 모드에서 실행 배치 모드는 비대화 형, 연속 통합 환경에서 Maven을 실행해야하는 경우 필수적입니다. 비대화 형 모드에서 실행할 때 Maven은 사용자의 입력을 받아들이 기 위해 멈추지 않습니다. 대신 입력이 필요할 때 합리적인 기본값을 사용합니다.

또한 출력 메시지를 본질적으로 다소 줄입니다.


비대화 형 모드에 사용되며 실행을 자동화 할 때 도움이됩니다.
Stanislav

22

내 문제는 -q가 너무 조용하다는 것입니다. CI에서 maven을 실행 중입니다.

메이븐 3.6.1 (4 월 2019 년) , 당신은 지금이 다운로드 / 업로드를 대화 형 모드에서 전송 진행을 억제하는 옵션을 .

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

또는 간단히 :

mvn -ntp ... ....

그것이 RayMNG-6605PR 239 의 의견에서 제안한 것 입니다 .


이 솔루션은 일반적으로 deploy작업 에서 원하지 않는 업로드 메시지와 다운로드를 억제합니다
Hilikus



2

메시지 만 제거하려면 [INFO]다음을 수행 할 수도 있습니다.

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

모든 출력 (오류 제외) 을 억제하려면 다음 stdout을 사용 /dev/null하여 리디렉션 할 수 있습니다.

mvn ... 1>/dev/null

(이는 bashMaven 명령을 실행하기 위해 (또는 유사한 셸)을 사용하는 경우에만 작동 합니다.)


0

Maven 3.1.x는 로깅을 위해 SLF4j를 사용합니다. https://maven.apache.org/maven-logging.html 에서 구성 방법에 대한 지침을 찾을 수 있습니다.

간단히 말해서 ${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.