Saya memiliki proyek Maven multi-modul. Demi contoh ini, pertimbangkan dua modul:
dataconsumer
Modul consumermemiliki modul datasebagai ketergantungan.
Modul datamendeklarasikan sekelompok kelas inti. Ada tes di bawah src/testyang 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/testhierarki.
Saya juga memiliki beberapa tes dalam consumermodul yang perlu membuat beberapa objek bertele-tele ini. Saya ingin menggunakan SampleDataHelperkelas saya (ditentukan dalam data src/test) dalam tes yang ada di consumer src/testpohon saya . Sayangnya, meskipun datamerupakan ketergantungan consumer, consumertidak dapat melihat kelas yang ada di bawah data src/test.
Untuk mengatasi ini, saya pikir saya mungkin membuat modul lain ( data-test), dan pindah SampleDataHelperke bawah src/main. Kemudian saya akan memasukkan data-testsebagai dependensi cakupan pengujiandata . Sayangnya, ini memperkenalkan ketergantungan melingkar: datapenggunaan data-test, tetapi data-testjuga membutuhkan data.
Satu-satunya solusi yang saya temukan adalah menempatkan SampleDataHelperdi data src/mainbawah sebuah testpaket dan berharap tidak ada kode aplikasi nyata yang memanggilnya.
Bagaimana saya bisa berbagi SampleDataHelperkelas 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 installatau mvn deploy. Hanya catatan singkat. Dalam salah satu proyek besar kami, kami memiliki pembungkus di atas junit TestBasedan lokasinya di src/mainmana saya juga tidak menganggapnya sebagai ide yang baik.