Maven daha az ayrıntılı yapılabilir mi?


104

Maven benim zevkime göre çok fazla çıktı üretiyor (Unix yolunu seviyorum: hiçbir haber iyi haber değildir).

Tüm [BİLGİ] satırlarından kurtulmak istiyorum, ancak Maven'in ayrıntı düzeyini kontrol eden bir bağımsız değişken veya yapılandırma ayarlarından bahsetmedim.

Günlük seviyesini belirlemenin LOG4J benzeri bir yolu yok mu?


2
Maven 3.6.1 (Nisan 2019, 10+ yıl sonra) ile mvn --no-transfer-progress ...(veya mvn -ntpkısa filmler için) yeterli bir çözüm olmalıdır. Bkz aşağıda Cevabımı .
VonC

Yanıtlar:


132

-Q anahtarını deneyebilirsiniz .

-q, - sessiz Sessiz çıktı - yalnızca hataları göster


2
@sheki: Açıklığa kavuşturmak için, bu seçenek günlükçü hata ayıklama mesajlarını devre dışı bırakmaz - bunu kaydedici ayarlarınızdan kapatmanız gerekir. Örneğin, logback kullanıyorsanız, projenize bir src / test / resources / logback-test.xml dosyası dahil etmek, test aşamasında günlük seviyenizi 'kapalı' olarak özelleştirmenize olanak tanır. Bu her şeyi temizleyecek.
codeturner

10
Benim sorunum, bu -qçok sessiz. CI altında maven çalıştırıyorum ve attığı adımları görmek istiyorum (ilerlemeyi izlemek için), ancak indirme göstergeleri ANSI olmayan ekranı karıştırıyor. Yalnızca indirme ilerleme göstergelerini kapatmanın bir yolu var mı?
Guss

6
@Guss: Yalnızca İndiriliyor / İndirilen mesajların kaybolmasını istiyorsanız, -Btoplu modu etkinleştirmek için kullanın (bunu yine de CI sisteminizde bulundurmalısınız!) Ve ardından MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"indirmeler için ilerleme bilgilerini sonlandırmak için ayarlayın .
ankon

1
Maven 3.5.x'te hilenin çalışması için aslında --batch-mode( -B) öğesini etkinleştirmem gerekiyor -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn.
Auke

Eğilimliyseniz , etkileşimli mod sorunlarıyla uyumlu bir çözüm önerdim. apache.org/jira/browse/MNG-6605 , github.com/apache/maven/pull/239
Ray

27

-q yukarıda belirtildiği gibi ihtiyacınız olan şeydir. Bir alternatif olabilir

-B , --batch modlu olmayan bir etkileşimli, sürekli entegrasyon ortamında Maven'i çalıştırmak gerekiyorsa etkileşimli olmayan (kesikli) modunda Toplu modunda çalıştırın esastır. Etkileşimli olmayan modda çalışırken Maven, kullanıcıdan gelen girdileri kabul etmeyi asla bırakmaz. Bunun yerine, girdi gerektirdiğinde makul varsayılan değerleri kullanacaktır.

Ayrıca çıktı mesajlarını aşağı yukarı temel unsurlara indirgeyecektir.


etkileşimli olmayan mod için kullanılır, bu da koşuları otomatikleştirirken yardımcı olur
Stanislav



6

-Q veya --quiet komut satırı seçeneklerini kullanın


2

Yalnızca [INFO]mesajlardan kurtulmak istiyorsanız şunları da yapabilirsiniz:

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

Bastırmak için tüm sen yönlendirmesinin (hatalar hariç) çıkışlarını stdoutiçin /dev/nullbirlikte:

mvn ... 1>/dev/null

(Bu yalnızca bashMaven komutlarını çalıştırmak için (veya benzer mermiler) kullanırsanız çalışır.)


0

Maven 3.1.x, günlük kaydı için SLF4j kullanır, nasıl yapılandırılacağına ilişkin talimatları https://maven.apache.org/maven-logging.html adresinde bulabilirsiniz.

Kısaca: Ortam değişkeni ${MAVEN_HOME}/conf/logging/simplelogger.propertiesaracılığıyla aynı özellikleri değiştirin veya ayarlayın MAVEN_OPTS.

Örneğin: Ayar MAVEN_OPTSiçin -Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rnyapılandırır toplu modu transferi dinleyici günlüğü ve -Dorg.slf4j.simpleLogger.defaultLogLevel=warnvarsayılan günlük düzeyini ayarlar.


0

Mevcut yanıt, kullanarak günlük düzeyine göre filtreleme yapmanıza yardımcı olur --quiet. Birçok INFO mesajının hata ayıklama için yararlı olduğunu buldum, ancak aşağıdaki gibi yapay günlük mesajlarının indirilmesi gürültülü ve yardımcı olmadı.

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

Bu çözümü buldum:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.