Saya memiliki proyek Maven multi-modul. Demi contoh ini, pertimbangkan dua modul:
data
consumer
Modul consumer
memiliki modul data
sebagai ketergantungan.
Modul data
mendeklarasikan sekelompok kelas inti. Ada tes di bawah src/test
yang menggunakannya. Tes ini memerlukan beberapa pembuatan objek bertele-tele, jadi saya memiliki kelas dengan beberapa metode utilitas di dalamnya untuk membuat objek ini. Kelas utilitas ini ( SampleDataHelper
) ada dalam src/test
hierarki.
Saya juga memiliki beberapa tes dalam consumer
modul yang perlu membuat beberapa objek bertele-tele ini. Saya ingin menggunakan SampleDataHelper
kelas saya (ditentukan dalam data src/test
) dalam tes yang ada di consumer src/test
pohon saya . Sayangnya, meskipun data
merupakan ketergantungan consumer
, consumer
tidak dapat melihat kelas yang ada di bawah data src/test
.
Untuk mengatasi ini, saya pikir saya mungkin membuat modul lain ( data-test
), dan pindah SampleDataHelper
ke bawah src/main
. Kemudian saya akan memasukkan data-test
sebagai dependensi cakupan pengujiandata
. Sayangnya, ini memperkenalkan ketergantungan melingkar: data
penggunaan data-test
, tetapi data-test
juga membutuhkan data
.
Satu-satunya solusi yang saya temukan adalah menempatkan SampleDataHelper
di data src/main
bawah sebuah test
paket dan berharap tidak ada kode aplikasi nyata yang memanggilnya.
Bagaimana saya bisa berbagi SampleDataHelper
kelas saya antar modul tanpa meletakkannya di bawah src/main
?
data
) bahkan sebelum saya dapat mengompilasi modul kedua saya ( consumer
).
mvn package
, tetapi seharusnya berfungsi dengan baik dalam satu langkah membangun saat Anda menggunakan mvn install
atau mvn deploy
. Hanya catatan singkat. Dalam salah satu proyek besar kami, kami memiliki pembungkus di atas junit TestBase
dan lokasinya di src/main
mana saya juga tidak menganggapnya sebagai ide yang baik.