Bisakah Maven dikurangi bertele-tele?

104

Maven mengeluarkan terlalu banyak baris output sesuai selera saya (saya suka cara Unix: tidak ada berita adalah kabar baik).

Saya ingin menyingkirkan semua baris [INFO], tetapi saya tidak dapat menemukan penyebutan argumen atau pengaturan konfigurasi yang mengontrol verbositas Maven.

Apakah tidak ada cara seperti LOG4J untuk menyetel tingkat log?

Asaf Bartov
sumber
2
Dengan Maven 3.6.1 (April 2019, 10+ tahun kemudian), mvn --no-transfer-progress ...(atau mvn -ntpsingkatnya) harus menjadi solusi yang memadai. Lihat jawaban saya di bawah .
VonC

Jawaban:

132

Anda dapat mencoba tombol -q .

-q, - Output senyap - hanya menampilkan kesalahan

Jorge Ferreira
sumber
2
@sheki: Untuk memperjelas, opsi ini tidak menonaktifkan pesan debug pencatat - Anda harus mematikannya melalui pengaturan pencatat Anda. Misalnya, jika Anda menggunakan logback, menyertakan file src / test / resources / logback-test.xml dalam proyek Anda akan memungkinkan Anda menyesuaikan level logging ke 'off' selama fase pengujian. Ini akan membersihkan semuanya.
codeturner
10
Masalah saya -qadalah terlalu sepi. Saya menjalankan maven di bawah CI, dan saya ingin melihat langkah-langkah yang diperlukan (untuk melacak kemajuan), tetapi indikator unduhan mengacaukan tampilan non-ANSI. Apakah ada cara untuk hanya mematikan indikator kemajuan unduhan?
Guss
6
@Guss: Jika Anda hanya ingin pesan Downloading / Downloaded pergi, gunakan -Buntuk mengaktifkan mode batch (Anda tetap harus memilikinya di sistem CI Anda!), Dan kemudian atur MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"untuk mematikan informasi kemajuan download.
ankon
1
Di maven 3.5.x saya benar-benar perlu mengaktifkan --batch-mode( -B) agar -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warntrik dapat bekerja.
Auke
jika Anda cenderung, saya telah mengirimkan solusi yang diusulkan yang kompatibel dengan masalah mode interaktif. apache.org/jira/browse/MNG-6605 , github.com/apache/maven/pull/239
Ray
27

-q seperti yang dikatakan di atas adalah apa yang Anda butuhkan. Alternatifnya bisa

-B , --batch-mode Jalankan dalam mode non-interaktif (batch) Mode batch sangat penting jika Anda perlu menjalankan Maven dalam lingkungan integrasi berkelanjutan yang non-interaktif. Saat berjalan dalam mode non-interaktif, Maven tidak akan pernah berhenti menerima masukan dari pengguna. Sebaliknya, ini akan menggunakan nilai default yang masuk akal ketika membutuhkan input.

Dan juga akan mengurangi pesan keluaran lebih atau kurang ke hal-hal penting.

Stanislav
sumber
ini digunakan untuk mode non-interaktif, yang membantu saat mengotomatiskan proses
Stanislav
22

Masalah saya adalah -q terlalu sepi. Saya menjalankan maven di bawah CI

Dengan Maven 3.6.1 (April 2019) , Anda sekarang memiliki opsi untuk menahan kemajuan transfer saat mengunduh / mengunggah dalam mode interaktif .

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

atau singkatnya:

mvn -ntp ... ....

Itulah yang diusulkan Ray dalam komentar dengan MNG-6605 dan PR 239 .

VonC
sumber
Solusi ini menekan pesan unggahan serta unduhan, yang biasanya tidak diinginkan dalam deploytugas
Hilikus
17

Tautan resmi: https://maven.apache.org/maven-logging.html

Anda dapat menambahkan parameter JVM :

-Dorg.slf4j.simpleLogger.defaultLogLevel=WARN

Waspadalah terhadap UPPERCASE.

jgrtalk.dll
sumber
6

Gunakan opsi baris perintah -q atau --quiet

Sietse
sumber
2

Jika Anda hanya ingin menghapus [INFO]pesan, Anda juga dapat melakukan:

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

Untuk menyembunyikan semua keluaran (kecuali kesalahan), Anda dapat mengalihkan stdoutke /dev/nulldengan:

mvn ... 1>/dev/null

(Ini hanya berfungsi jika Anda menggunakan bash(atau shell serupa) untuk menjalankan perintah Maven.)

m13r
sumber
0

Maven 3.1.x menggunakan SLF4j untuk logging, Anda dapat menemukan petunjuk cara mengkonfigurasinya di https://maven.apache.org/maven-logging.html

Singkatnya: Ubah ${MAVEN_HOME}/conf/logging/simplelogger.properties, atau setel properti yang sama melalui MAVEN_OPTSvariabel lingkungan.

Misalnya: menyetel MAVEN_OPTSuntuk -Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rnmengonfigurasi logging pemroses transfer mode batch, dan -Dorg.slf4j.simpleLogger.defaultLogLevel=warnmenyetel tingkat log default.

ankon
sumber
0

Jawaban yang ada membantu Anda memfilter berdasarkan penggunaan level log --quiet. Saya menemukan bahwa banyak pesan INFO berguna untuk debugging, namun pesan log artefak pengunduhan seperti berikut berisik dan tidak membantu.

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

Saya menemukan solusi ini:

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
errant.info
sumber