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 -rf
veya 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/subsubproject
parametre 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.)
install
hedef 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. install
Yerel 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 package
yapıp install
kullanmadığınız yapılar için kullanmak -rf
bir seçenek değil: tüm yapıyı yapmanız gerekecek.
-rf
komutu 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 :client
ile--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
--resume
veya-r
kı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
-rf
kı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.