ฉันต้องการป้องกันไม่ให้ maven แสดงข้อความ INFO ฉันต้องการดูเฉพาะคำเตือนและข้อผิดพลาด (ถ้ามี)
ฉันจะบรรลุสิ่งนี้ได้อย่างไรโดยเฉพาะอย่างยิ่งโดยการเปลี่ยนบรรทัดคำสั่งที่เรียก maven?
ฉันต้องการป้องกันไม่ให้ maven แสดงข้อความ INFO ฉันต้องการดูเฉพาะคำเตือนและข้อผิดพลาด (ถ้ามี)
ฉันจะบรรลุสิ่งนี้ได้อย่างไรโดยเฉพาะอย่างยิ่งโดยการเปลี่ยนบรรทัดคำสั่งที่เรียก maven?
คำตอบ:
ฉันทำการตรวจสอบเพียงเล็กน้อยเพราะฉันสนใจวิธีแก้ปัญหาด้วย
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 เลือกระดับเริ่มต้นจากไฟล์ปรับแต่งบน classpath ฉันยังลองการตั้งค่าอื่น ๆ สองสามรายการผ่าน System.properties แต่การตั้งค่าทั้งหมดไม่สำเร็จ
คุณสามารถหาที่มาของ slf4j บน github ได้ที่นี่: slf4j github
แหล่งที่มาของ simplelogger ที่นี่: slf4j / jcl-over-slf4j / src / main / java / org / apache / คอมมอนส์ / การบันทึก / 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
รองรับ regex และตัวเลือกอื่น ๆ ที่อาจทำให้รวบรัดมากขึ้น - 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)
พิจารณาใช้~/.mavenrc
สำหรับการตั้งค่าMAVEN_OPTS
หากคุณต้องการเปลี่ยนการบันทึกสำหรับการเข้าสู่ระบบของคุณในการเรียกใช้ maven ทั้งหมด
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>
คุณสามารถทำได้โดยใช้ด้านล่างใน commandline เอง
-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 repo: "git clone https://github.com/apache/maven-3.git "
แก้ไข org.apache.maven.cli.MavenCli # การบันทึกและเปลี่ยน
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
ถึง
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
ในเวอร์ชันสแนปชอตปัจจุบันจะอยู่ที่บรรทัด 270
จากนั้นเพียงเรียกใช้ "mvn ติดตั้ง", maven distro ใหม่ของคุณจะอยู่ในโฟลเดอร์ "apache-maven \ target \"
ดูสิ่งนี้สำหรับการอ้างอิง: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()
- หากคุณสามารถใช้งานได้กับการกำหนดค่า
วิธีที่ง่ายที่สุดคืออัปเกรดเป็นMaven 3.3.1หรือสูงกว่าเพื่อใช้ประโยชน์จากการ${maven.projectBasedir}/.mvn/jvm.config
สนับสนุน
จากนั้นคุณสามารถใช้ตัวเลือกใด ๆ จากการสนับสนุนSimpleLoggerของ SL4FJ ของ Maven เพื่อกำหนดค่าตัวบันทึกทั้งหมดหรือตัวบันทึกเฉพาะ ตัวอย่างเช่นต่อไปนี้เป็นวิธีการเตือนทั้งหมดที่warn
ระดับยกเว้น PMD ที่กำหนดค่าให้เข้าสู่ระบบที่error
:
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
ดูที่นี่สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการบันทึกด้วย Maven
เปลี่ยนinfo
ไปerror
ในsimplelogging.properties
ไฟล์จะช่วยในการบรรลุความต้องการของคุณ
เพียงแค่เปลี่ยนค่าของบรรทัดด้านล่าง
org.slf4j.simpleLogger.defaultLogLevel=info
ถึง
org.slf4j.simpleLogger.defaultLogLevel=error
ฉันสังเกตว่าเมื่อใช้ปลั๊กอิน mfire sunfire รุ่น2.20.1คำเตือนทั้งหมดจะถูกเขียนลงในไฟล์ dumpstream เช่น/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
ไปที่simplelogger.properties
ใน${MAVEN_HOME}/conf/logging/
และตั้งค่าคุณสมบัติต่อไปนี้:
org.slf4j.simpleLogger.defaultLogLevel=warn
org.slf4j.simpleLogger.log.Sisu=warn
org.slf4j.simpleLogger.warnLevelString=warn
warn
ไม่warning
-B, --batch-mode
หรือ-q
จะทำให้mvn
verbose น้อยลง