Maven inşasına başarısız olduğu noktadan başlayabilir miyiz


91

Diyelim ki, 7 modüllü büyük projem üzerinde tam bir derleme yapıyorum ve 6. modülde, bir test başarısız olduğu için yapı başarısız oldu. Yapıma başarısız olduğu noktadan başlayabileceğim herhangi bir yol var mı?

Yanıtlar:


135

Oluşturmaya 6. modülden -rfveya kullanarak devam edebilirsiniz --resume-from:

-rf, --resume-from
          Reaktörü belirtilen projeden devam ettir

Ayrıntılar için Gelişmiş Reaktör Seçeneklerine bakın.


Bunun için teşekkürler. Ben bir şans vereceğim
Shekhar

1
bu iyi, alt projeler için sadece subproject/subsubprojectparametre olarak kullanın
akostadinov

13
Örnek:maven -rf <module name> clean install
Zoltán

9
Bu sadece modül adının başına iki nokta üst üste koyduğumda işe yaradı, örn mvn -rf :moduleName install. (Kolonun neden gerekli olduğundan tam olarak emin değilim ama öyle görünüyor - en azından benim kurulumum için.)
Steve Chambers

3
Görünüşe göre bu, yalnızca ilk yapınızın içinde bir installhedef varsa işe yarar , çünkü devam eden derleme daha sonra bunlara olan bağımlılıkları çözmek için yerel Maven deponuzdan zaten oluşturulmuş yapıları alabilir. installYerel deponuzu anlık görüntülerle karıştırdığınızda ve beklediğinizden daha eski bir anlık görüntüye bağlı kalabileceğiniz için derlemeleri çalıştırmanın kötü bir uygulama olduğunu düşünüyorum. Görünüşe göre yalnızca sizin packageyapıp installkullanmadığınız yapılar için kullanmak -rfbir seçenek değil: tüm yapıyı yapmanız gerekecek.
Frans

13

İşte örnek

mvn clean install -rf :your-module

9

-rfkomutu kullanarak istediğiniz herhangi bir modülden yapıyı devam ettirebilirsiniz . Örneğin, derlemeniz myproject-proxy'de başarısız olduysa, aşağıdaki komutu kullanabilirsiniz:

mvn -rf myproject-proxy clean install

Bunun çalışması için iki nokta üst üste koymam gerekiyordu örn. -Rf: yourModule Diğer cevaplara bakın.
Gapmeister66

8

maven özetine bakın ve yürütülen modülleri ve maven'ın nerede durdurulduğunu göreceksiniz. o zaman şunu dene:

mvn clean install-Dmaven.test.skip=true -rf :yourModule

0

"Göre ne Maven 4 Yenilikler " dan (2020 Kasım) Maarten Mulders , yakında ile yapabileceksiniz olacak yaklaşan Maven 4.0.0 (Q1 2021)

Şu örnek proje yapısını düşünün:

https://maarten.mulders.it/2020/11/whats-new-in-maven-4/example-project_hu981f14f09d98e6139a671549a98c2057_118421_1037x555_resize_box_2.png

--Also-make ile --resume-from kullanın

Reactor'daki ilk iyileştirme bir hata düzeltmesidir.
Daha önce, proje derlemeniz istemci modülünde başarısız olsaydı, derlemeye devam etmek için bir ipucu alırdınız --resume-from :client. Ancak bunu yaparsanız, yapı tekrar bozulur: bu sefer Maven ortak modülü bulamadığı için.
Eklemenin --also-make(veya -am) bunu ele alacağını düşünebilirsiniz , ancak değil. Bu uzun süredir devam eden böcek artık orada değil.

Eğer birleştirirseniz --resume-from :clientile --also-make, Reaktör projenizde tüm modülleri bulacak ve istendiği gibi yapı devam etmektedir.

Son başarısızlık noktasından otomatik olarak devam et

Ama büyük ihtimalle fark etmeyeceksin. Bununla ilgili olan şey --resume-from :client, sizi gereğinden fazla düşündürmesidir.

Maven 4 ile hayatınızı daha da kolaylaştırabilir ve kullanabilir --resumeveya -rkısaca yapabilirsiniz. En son başarısız olan modülden derlemeye otomatik olarak devam edecektir .

Ama dahası var! Belki paralel yapılar kullanıyorsunuz . Bir modül dizisi başarıyla oluşturulmuşken, başka bir modül dizisinin inşası bozulmuştur.
Bu senaryoda, kullanımı -rönceki yapıda başarılı olan modülleri atlayacaktır.

Bu iki özelliğin birleşimi, büyük, kurumsal yazılım projenizi oluşturmak için ihtiyaç duyduğunuz zamanı çok daha iyi hale getirebilir!


merhaba @VonC, konu dışı soruyu soruyorum. hangi yumuşak eşyaların bakımını yaptığınızı bilmek istiyorum. profil sayfanızda jira, git, maven vb. gördüm Katkıda bulunuyor musunuz? ve neden git hakkında bu kadar çok şey biliyorsun? ve onları inşa ediyor musun? im meraklı ...
nikhil swami

1
@nikhilswami İşyerinde kullandığım birkaç aracın bakımını yapıyorum ( github.com/VonC ). Ve Git'i 2009'da Stack Overflow'daki soruları yanıtlayarak öğrendim. Bugünlerde Git'i kullanan geliştirici ekiplerini aktif olarak destekliyorum, bu yüzden de bu şekilde öğrenmeye devam ediyorum.
VonC

-1

Sözdizimi: mvn -rf modulename mavengoal veya mvn --resume-from modulename mavengoal

Ör: mvn -rf admin-module clean install veya mvn --resume-from admin-module clean install


-rfkısaltması değil --remove-from. Bu kısaltmasıdır--resume-from
Gili

-2

Hala başarısız olup olmadığını görmek için modül 6'nın yapısını ayrı ayrı çalıştırabilirsiniz, ancak korkarım ki "büyük" yapıyı çalıştırmak istediğinizde tüm modülleri baştan oluşturmanız gerekir.

Düzenleme: Elbette sonraki derlemeler daha hızlı olacaktır çünkü yapınızın bir parçası olarak temiz çalıştırmadığınız sürece 1-5 modüllerinin kodu zaten derlenmiştir.


Evet .. Bunu biliyorum .. Ama inşaata başarısız olduğu noktadan başlamak için bir yol arıyordum ..
Shekhar
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.