Saya menggunakan Maven 2.2.1 dan untuk membangun proyek saya, saya menggunakan perintah ini
mvn clean install -Dmaven.test.skip=true
Namun, bangunan gagal mengatakan tidak dapat menemukan salah satu artefak. Namun, ketika saya menggunakan:
mvn clean install -DskipTests
semuanya bekerja dengan baik.
Sejauh ini saya telah berpikir bahwa 2 perintah ini setara. Namun, tautan ini tampaknya menunjukkan bahwa -Dmaven.test.skip=true
juga melewatkan kompilasi kasus uji.
Namun, itu masih belum menjelaskan kepada saya mengapa satu perintah berfungsi dan yang lainnya tidak. Akan berterima kasih jika ada yang menjelaskan ini padaku.
-Dmaven.test.skip=true -DskipTests
? Satu atau yang lain kadang-kadang dapat dihilangkan, tergantung pada keadaan, tetapi siapa yang ingin memikirkan hal itu ..Jawaban:
Seperti yang Anda catat,
-Dmaven.test.skip=true
lompati saat menyusun tes. Lebih penting lagi, itu melompat membangun artefak tes. Praktik umum untuk proyek-proyek besar adalah memiliki utilitas pengujian dan kelas dasar dibagi di antara modul-modul dalam proyek yang sama.Ini dicapai dengan memiliki modul yang membutuhkan
test-jar
modul yang dibangun sebelumnya:Jika
-Dmaven.test.skip=true
(atau hanya-Dmaven.test.skip
) ditentukan,test-jar
s tidak dibangun, dan modul apa pun yang bergantung padanya akan gagal dibangun.Sebaliknya, ketika Anda menggunakan
-DskipTests
, Maven tidak menjalankan tes, tetapi ia mengkompilasi dan membangun tabung tes, membuatnya tersedia untuk modul-modul berikutnya.sumber
Saya memiliki beberapa ketergantungan dengan tes untuk membangun paket.
Perintah berikut ini berhasil menimpa kebutuhan artefak uji untuk menyelesaikan tujuan:
sumber
Ada perbedaan antara setiap parameter.
The -DskipTests melewati fase tes yang sedang berjalan, artinya pada akhir proses ini Anda akan dikompilasi.
The -Dmaven.test.skip = true melewatkan tahap kompilasi dan menjalankan tes.
Sebagai parameter -Dmaven.test.skip = true skip compiling, Anda tidak memiliki artefak tes.
Untuk informasi lebih lanjut, baca dokumentasi surfire: http://maven.apache.org/plugins-archives/maven-surefire-plugin-2.12.4/examples/skipping-test.html
sumber
Saya bisa memberi Anda contoh yang menghasilkan masalah yang sama, tetapi mungkin tidak memberi Anda jawaban untuk pertanyaan Anda. (Selain itu, dalam contoh ini, saya menggunakan pengetahuan Maven 3 saya, yang mungkin tidak berlaku untuk Maven 2.)
Dalam proyek maven multi-modul (berisi modul
A
danB
, di manaB
tergantung padaA
), Anda dapat menambahkan juga ketergantungan tes padaA
dariB
.Ketergantungan ini dapat terlihat sebagai berikut:
(untuk informasi lebih lanjut, lihat https://maven.apache.org/guides/mini/guide-attached-tests.html )
Perhatikan bahwa proyek
A
menghasilkan artefak sekunder dengan penggolong ditests
mana kelas uji dan sumber daya pengujian berada.Jika Anda membangun proyek Anda dengan
-Dmaven.test.skip=true
, Anda akan mendapatkan kesalahan resolusi ketergantungan selama artefak tes tidak ditemukan di repo lokal Anda atau repositori eksternal. Alasannya adalah bahwa kelas tes tidak dikompilasi atautests
artifak diproduksi.Namun, jika Anda menjalankan build Anda dengan artefak
-DskipTests
Andatests
akan diproduksi (meskipun tes tidak akan berjalan) dan ketergantungan akan diselesaikan.sumber
Untuk melewatkan test case selama instalasi maven clean saya menggunakan paramater -DskipTests dalam perintah berikut
ke jendela terminal
sumber
Parameter -DskipTests mungkin tidak berfungsi tergantung pada versi plugin pasti Anda.
Sumber: Rincian Parameter Surefire
sumber
Selama kompilasi pakar, Anda dapat melewati eksekusi pengujian dengan menambahkan plugin berikut di pom.xml
sumber
mvn test