Bisakah kita memulai membangun maven dari titik di mana ia gagal


91

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:


135

Anda dapat melanjutkan pembuatan dari modul ke-6 menggunakan -rfatau --resume-from:

-rf, --resume-from
          Lanjutkan reaktor dari proyek tertentu

Lihat Opsi Reaktor Lanjutan untuk detailnya.


Terima kasih untuk ini. Saya akan mencobanya
Shekhar

1
ini bagus, untuk sub-subproyek gunakan saja subproject/subsubprojectsebagai parameter
akostadinov

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

9
Ini hanya berfungsi untuk saya ketika saya menambahkan nama modul dengan titik dua, misalnya mvn -rf :moduleName install. (Tidak yakin mengapa titik dua diperlukan tetapi tampaknya - setidaknya untuk pengaturan saya.)
Steve Chambers

3
Sepertinya ini hanya berfungsi jika build awal Anda memiliki installtujuan 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 installbuild 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 packagedan tidak Anda installgunakan, -rfbukan pilihan: Anda harus melakukan keseluruhan build.
Frans

13

Inilah contohnya

mvn clean install -rf :your-module

9

Anda dapat melanjutkan pembuatan dari modul apa pun yang Anda inginkan dengan menggunakan -rfperintah. Misalnya, jika build Anda gagal di myproject-proxy, Anda dapat menggunakan perintah berikut:

mvn -rf myproject-proxy clean install

Saya perlu meletakkan titik dua agar ini berfungsi misalnya -rf: yourModule Lihat jawaban lainnya.
Gapmeister66

8

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

0

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:

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

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 :clientdengan --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 :clientadalah hal itu membuat Anda berpikir lebih dari yang diperlukan.

Dengan Maven 4, Anda dapat membuat hidup Anda lebih mudah dan berguna --resume, atau -rsingkatnya. 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!


halo @VonC, saya menanyakan pertanyaan di luar topik. Saya ingin tahu barang lunak mana yang Anda pelihara? saya telah melihat jira, git, maven dll di halaman profil anda apakah anda kontributor? dan kenapa kamu tahu banyak tentang git? dan apakah Anda membangunnya? Saya penasaran ...
nikhil swami

1
@nikhilswami Saya memelihara beberapa alat yang saya gunakan di tempat kerja ( github.com/VonC ). Dan saya mempelajari Git dengan menjawab pertanyaan tentang Stack Overflow pada tahun 2009. Saat ini, saya secara aktif mendukung tim pengembang menggunakan Git, jadi saya terus mempelajarinya juga.
VonC

-1

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


-rfbukan kependekan dari --remove-from. Ini adalah kependekan dari--resume-from
Gili

-2

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.


Ya .. Saya tahu ini .. Tapi saya sedang mencari cara untuk memulai membangun dari titik gagal ..
Shekhar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.