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:
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.
subproject/subsubprojectparametre olarak kullanın
maven -rf <module name> clean install
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.)
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.
-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
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
"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:
--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!
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
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.