Maven có thể được làm ít dài dòng hơn không?


104

Maven phun ra quá nhiều dòng đầu ra theo sở thích của tôi (Tôi thích cách Unix: không có tin tức nào là tin tốt).

Tôi muốn loại bỏ tất cả các dòng [INFO], nhưng tôi không thể tìm thấy bất kỳ đề cập nào về đối số hoặc cài đặt cấu hình kiểm soát độ chi tiết của Maven.

Không có cách nào giống như LOG4J để đặt mức nhật ký?


2
Với Maven 3.6.1 (tháng 4 năm 2019, hơn 10 năm sau), mvn --no-transfer-progress ...(hoặc mvn -ntpđối với quần short) sẽ là một giải pháp thích hợp. Xem câu trả lời của tôi dưới đây .
VonC

Câu trả lời:


132

Bạn có thể thử chuyển đổi -q .

-q, - yên tĩnh Đầu ra yên tĩnh - chỉ hiển thị lỗi


2
@sheki: Để làm rõ, tùy chọn này không tắt thông báo gỡ lỗi của trình ghi nhật ký - bạn cần tắt thông báo đó thông qua cài đặt trình ghi nhật ký của mình. Ví dụ: nếu bạn đang sử dụng logback, bao gồm tệp src / test / resources / logback-test.xml trong dự án của bạn sẽ cho phép bạn tùy chỉnh mức ghi nhật ký của mình thành 'tắt' trong giai đoạn thử nghiệm. Điều này sẽ làm sạch mọi thứ.
codeturner

10
Vấn đề của tôi -qlà quá yên tĩnh. Tôi đang chạy maven trong CI và tôi muốn xem các bước thực hiện (để theo dõi tiến trình), nhưng các chỉ báo tải xuống đang làm cho màn hình không phải ANSI trở nên lộn xộn. Có cách nào để chỉ tắt các chỉ báo tiến trình tải xuống không?
Guss

6
@Guss: Nếu bạn chỉ muốn thông báo Đang tải xuống / Đã tải xuống biến mất, hãy sử dụng -Bđể bật chế độ hàng loạt (dù sao thì bạn cũng nên có chế độ đó trong hệ thống CI của mình!), Sau đó đặt MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"để loại bỏ thông tin tiến trình tải xuống.
ankon

1
Trong maven 3.5.x, tôi thực sự cần phải kích hoạt --batch-mode( -B) để -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warnthủ thuật hoạt động.
Auke

nếu bạn có khuynh hướng, tôi đã gửi một giải pháp được đề xuất tương thích với các vấn đề về chế độ tương tác.apache.org/jira/browse/MNG-6605 , github.com/apache/maven/pull/239
Ray

27

-q như đã nói ở trên là những gì bạn cần. Một sự thay thế có thể là

-B , --batch-mode Chạy ở chế độ không tương tác (hàng loạt) Chế độ hàng loạt là điều cần thiết nếu bạn cần chạy Maven trong một môi trường tích hợp liên tục, không tương tác. Khi chạy ở chế độ không tương tác, Maven sẽ không bao giờ dừng lại để chấp nhận đầu vào từ người dùng. Thay vào đó, nó sẽ sử dụng các giá trị mặc định hợp lý khi nó yêu cầu đầu vào.

Và cũng sẽ làm giảm các thông báo đầu ra ít nhiều đến những yếu tố cần thiết.


nó được sử dụng cho chế độ không tương tác, giúp tự động hóa các lần chạy
Stanislav

22

Vấn đề của tôi là -q quá yên tĩnh. Tôi đang chạy maven theo CI

Với Maven 3.6.1 (tháng 4 năm 2019) , giờ đây bạn có tùy chọn để ngăn tiến trình truyền tải khi tải xuống / tải lên ở chế độ tương tác .

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

hay nói ngắn gọn là:

mvn -ntp ... ....

Đó là những gì Ray đã đề xuất trong các bình luận với MNG-6605PR 239 .


Giải pháp này ngăn chặn các tin nhắn tải lên cũng như tải xuống, thường không được mong muốn trong một deploytác vụ
Hilikus


6

Sử dụng tùy chọn dòng lệnh -q hoặc --quiet


2

Nếu bạn chỉ muốn loại bỏ các [INFO]tin nhắn, bạn cũng có thể làm:

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

Để chặn tất cả các đầu ra (ngoại trừ lỗi), bạn có thể chuyển hướng stdoutđến /dev/nullbằng:

mvn ... 1>/dev/null

(Điều này chỉ hoạt động nếu bạn sử dụng bash(hoặc các trình bao tương tự) để chạy các lệnh Maven.)


0

Maven 3.1.x sử dụng SLF4j để ghi nhật ký, bạn có thể tìm hướng dẫn cách định cấu hình nó tại https://maven.apache.org/maven-logging.html

Tóm lại: Sửa đổi ${MAVEN_HOME}/conf/logging/simplelogger.propertieshoặc đặt các thuộc tính giống nhau thông qua MAVEN_OPTSbiến môi trường.

Ví dụ: cài đặt MAVEN_OPTSđể -Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rnđịnh cấu hình ghi nhật ký của trình nghe chuyển chế độ hàng loạt và -Dorg.slf4j.simpleLogger.defaultLogLevel=warnđặt mức nhật ký mặc định.


0

Câu trả lời hiện có giúp bạn lọc dựa trên cấp độ nhật ký đang sử dụng --quiet. Tôi nhận thấy rằng nhiều thông báo INFO hữu ích để gỡ lỗi, tuy nhiên, việc tải xuống các thông báo nhật ký giả như sau là ồn ào và không hữu ích.

Downloading: http://nexus:8081/nexus/content/groups/public/org/apache/maven/plugins/maven-compiler-plugin/maven-metadata.xml

Tôi đã tìm thấy giải pháp này:

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.