Maven สามารถทำให้ละเอียดน้อยลงได้หรือไม่?


106

Maven พ่นออกมามากเกินไปสำหรับรสนิยมของฉัน (ฉันชอบวิธี Unix: ไม่มีข่าวดี)

ฉันต้องการลบ[INFO]บรรทัดทั้งหมดแต่ไม่พบการกล่าวถึงอาร์กิวเมนต์หรือการตั้งค่าการกำหนดค่าที่ควบคุมความฟุ่มเฟื่อยของ Maven

ไม่มีวิธีที่เหมือน LOG4J ในการตั้งค่าระดับการบันทึกหรือไม่?


2
ด้วย Maven 3.6.1 (เมษายน 2019, 10+ ปีต่อมา) mvn --no-transfer-progress ...(หรือmvn -ntpสำหรับกางเกงขาสั้น) ควรเป็นทางออกที่เพียงพอ ดูคำตอบของฉันด้านล่าง
VonC

คำตอบ:


133

คุณสามารถลองสวิทช์-q

-q, --quietเอาท์พุทเงียบ - เพียงแสดงข้อผิดพลาด


2
@sheki: เพื่อชี้แจงว่าตัวเลือกนี้ไม่ได้ปิดใช้งานข้อความดีบักของคนตัดไม้คุณต้องปิดใช้งานผ่านการตั้งค่าคนตัดไม้ของคุณ ตัวอย่างเช่นหากคุณใช้ logback รวมถึงไฟล์ src / test / resources / logback-test.xml ในโปรเจ็กต์ของคุณจะช่วยให้คุณปรับแต่งระดับการบันทึกเป็น "ปิด" ในระหว่างขั้นตอนการทดสอบ วิธีนี้จะทำให้ทุกอย่างสะอาดขึ้น
codeturner

12
ปัญหาของฉัน-qคือเงียบเกินไป ฉันใช้ maven ภายใต้ CI และฉันต้องการดูขั้นตอนที่ใช้ (เพื่อติดตามความคืบหน้า) แต่ตัวบ่งชี้การดาวน์โหลดทำให้การแสดงผลที่ไม่ใช่ 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/browse/MNG-6605 , github.com/apache/maven/pull/239
Ray

27

-qตามที่กล่าวไว้ข้างต้นคือสิ่งที่คุณต้องการ ทางเลือกอื่นอาจเป็น:

-B, --batch-mode รันในโหมดที่ไม่โต้ตอบ (แบทช์) โหมดแบตช์เป็นสิ่งสำคัญหากคุณต้องการรัน Maven ในสภาพแวดล้อมการผสานรวมแบบต่อเนื่องที่ไม่โต้ตอบ เมื่อทำงานในโหมดไม่โต้ตอบ Maven จะไม่หยุดรับข้อมูลจากผู้ใช้ แต่จะใช้ค่าเริ่มต้นที่สมเหตุสมผลเมื่อต้องป้อนข้อมูล

และยังจะลดข้อความที่ส่งออกไปไม่มากก็น้อยตามความจำเป็น


ใช้สำหรับโหมดไม่โต้ตอบซึ่งจะช่วยในการทำงานโดยอัตโนมัติ
Stanislav

22

ปัญหาของฉันคือ -q เงียบเกินไป ฉันทำงาน maven ภายใต้ CI

ด้วยMaven 3.6.1 (เมษายน 2019)ตอนนี้คุณมีตัวเลือกในการปราบปรามการถ่ายโอนความคืบหน้าเมื่อมีการดาวน์โหลด / อัปโหลดในโหมดโต้ตอบ

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

หรือเรียกสั้น ๆ ว่า

mvn -ntp ... ....

นั่นคือสิ่งที่เรย์ที่นำเสนอในการแสดงความคิดเห็นกับMNG-6605และPR 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

กล่าวโดยย่อ: แก้ไข${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.