Misalkan, saya melakukan build penuh pada proyek besar saya yang memiliki 7 modul dan pada modul ke-6, build tersebut gagal karena pengujian gagal. Apakah ada cara untuk memulai build dari titik gagal?
Jawaban:
Anda dapat melanjutkan pembuatan dari modul ke-6 menggunakan -rf
atau --resume-from
:
-rf, --resume-from
Lanjutkan reaktor dari proyek tertentu
Lihat Opsi Reaktor Lanjutan untuk detailnya.
subproject/subsubproject
sebagai parameter
maven -rf <module name> clean install
mvn -rf :moduleName install
. (Tidak yakin mengapa titik dua diperlukan tetapi tampaknya - setidaknya untuk pengaturan saya.)
install
tujuan di dalamnya, karena build yang dilanjutkan kemudian bisa mendapatkan artefak yang sudah dibuat dari repositori Maven lokal Anda untuk menyelesaikan dependensi padanya. Menurut saya praktik yang buruk untuk menjalankan install
build saat Anda akhirnya mengacaukan repositori lokal Anda dengan snapshot dan Anda mungkin akan bergantung pada snapshot yang lebih lama dari yang Anda harapkan. Sepertinya untuk build yang hanya ada package
dan tidak Anda install
gunakan, -rf
bukan pilihan: Anda harus melakukan keseluruhan build.
Anda dapat melanjutkan pembuatan dari modul apa pun yang Anda inginkan dengan menggunakan -rf
perintah. Misalnya, jika build Anda gagal di myproject-proxy, Anda dapat menggunakan perintah berikut:
mvn -rf myproject-proxy clean install
lihat ringkasan maven dan Anda akan melihat modul yang dieksekusi dan di mana maven dihentikan. lalu coba ini:
mvn clean install-Dmaven.test.skip=true -rf :yourModule
Menurut " What's New in Maven 4 " (November 2020) dari Maarten Mulders , Anda akan segera dapat melakukannya, dengan Maven 4.0.0 mendatang (Q1 2021)
Pertimbangkan contoh struktur proyek ini:
Gunakan --also-make bersama --resume-from
Peningkatan pertama pada Reaktor adalah perbaikan bug.
Sebelumnya, jika build proyek Anda gagal pada modul klien, Anda akan mendapatkan petunjuk untuk melanjutkan pembangunan tersebut--resume-from :client
. Tetapi jika Anda melakukannya, build tersebut akan rusak lagi: kali ini karena Maven tidak dapat menemukan modul umum.
Anda mungkin berpikir bahwa menambahkan--also-make
(atau-am
) akan mengatasi hal ini, tetapi tidak. Bug ini sudah berlangsung lama sudah tidak ada lagi.Jika Anda menggabungkan
--resume-from :client
dengan--also-make
, Reaktor akan menemukan semua modul dalam proyek Anda dan melanjutkan pembangunan seperti yang Anda minta.
Lanjutkan secara otomatis dari titik kegagalan terakhir
Namun kemungkinan besar Anda tidak akan menyadarinya. Masalahnya
--resume-from :client
adalah hal itu membuat Anda berpikir lebih dari yang diperlukan.Dengan Maven 4, Anda dapat membuat hidup Anda lebih mudah dan berguna
--resume
, atau-r
singkatnya. Ini akan secara otomatis melanjutkan pembangunan dari modul yang terakhir gagal .Tapi masih ada lagi! Mungkin Anda menggunakan build paralel . Satu urutan modul berhasil dibangun, sedangkan rangkaian modul lainnya rusak.
Dalam skenario itu, menggunakan-r
akan melewatkan modul yang berhasil di build sebelumnya.Kombinasi dari kedua fitur ini dapat meningkatkan waktu yang Anda butuhkan untuk membangun proyek perangkat lunak perusahaan yang besar!
Sintaks: mvn -rf modulename mavengoal atau mvn --resume-from modulename mavengoal
Contoh: mvn -rf admin-module clean install atau mvn --resume-from admin-module clean install
-rf
bukan kependekan dari --remove-from
. Ini adalah kependekan dari--resume-from
Anda dapat menjalankan build modul 6 secara terpisah untuk melihat apakah build tersebut masih gagal, tetapi saya khawatir Anda harus membangun semua modul dari awal saat Anda ingin menjalankan build "besar".
Edit: Tentu saja, build selanjutnya akan lebih cepat karena kode modul 1-5 sudah dikompilasi, kecuali jika Anda menjalankan clean sebagai bagian dari build Anda.