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 \"폴더에 있습니다.
참조를 위해이 diff를 참조하십시오 : https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()
구성 가능성을 살 수 있다면 mojo는 maven 로거에 의존해야 합니다.
가장 간단한 방법은 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
-B, --batch-mode
또는-q
만들 것이다mvn
덜 장황.