ฉันมีโครงการ Maven แบบหลายโมดูล เพื่อประโยชน์ของตัวอย่างนี้ให้พิจารณาสองโมดูล:
data
consumer
โมดูลconsumer
มีโมดูลdata
เป็นที่พึ่งพา
โมดูลdata
ประกาศกลุ่มของคลาสหลัก มีการทดสอบภายใต้การsrc/test
ใช้งานนั้น การทดสอบเหล่านี้จำเป็นต้องมีการสร้างวัตถุที่ยืดยาวดังนั้นฉันจึงมีคลาสที่มีวิธียูทิลิตี้บางอย่างอยู่ในนั้นเพื่อสร้างวัตถุเหล่านี้ คลาสยูทิลิตี้นี้ ( SampleDataHelper
) อยู่ในsrc/test
ลำดับชั้น
ฉันยังมีการทดสอบบางอย่างในconsumer
โมดูลที่จำเป็นต้องสร้างวัตถุที่ยืดยาวเหล่านี้ ฉันต้องการใช้SampleDataHelper
คลาสของฉัน(กำหนดไว้ในdata src/test
) ในการทดสอบที่อยู่ในconsumer src/test
โครงสร้างของฉัน แต่น่าเสียดายที่แม้data
เป็นพึ่งพาของconsumer
, ไม่สามารถดูชั้นเรียนที่มีอยู่ภายใต้consumer
data src/test
เพื่อต่อสู้กับสิ่งนี้ฉันคิดว่าฉันอาจสร้างโมดูลอื่น ( data-test
) และย้ายSampleDataHelper
ไปที่ด้านsrc/main
ล่าง จากนั้นฉันจะรวมdata-test
เป็นการอ้างอิงขอบเขตการทดสอบของdata
. น่าเสียดายที่สิ่งนี้แนะนำการพึ่งพาแบบวงกลม: data
ใช้data-test
แต่data-test
ต้องใช้data
ด้วย
ทางออกเดียวที่ฉันคิดขึ้นคือวางSampleDataHelper
ไว้data src/main
ใต้test
แพ็คเกจและหวังว่าจะไม่มีรหัสแอปพลิเคชันจริงที่เรียกว่า
ฉันจะแบ่งปันSampleDataHelper
ชั้นเรียนระหว่างโมดูลโดยไม่ต้องใส่ไว้ข้างใต้ได้src/main
อย่างไร
data
) ก่อนที่ฉันจะคอมไพล์โมดูลที่สองของฉัน ( consumer
)
mvn package
แต่มันควรจะทำงานได้ดีในขั้นตอนการสร้างเพียงครั้งเดียวเมื่อคุณใช้หรือmvn install
mvn deploy
เพียงบันทึกสั้น ๆ ในโครงการขนาดใหญ่โครงการหนึ่งของเราเรามีกระดาษห่อหุ้มของจูนิทTestBase
และตั้งอยู่src/main
ซึ่งฉันก็ไม่คิดว่าจะเป็นความคิดที่ดีเช่นกัน