ฉันมีโครงการ Maven แบบหลายโมดูล เพื่อประโยชน์ของตัวอย่างนี้ให้พิจารณาสองโมดูล:
dataconsumer
โมดูลconsumerมีโมดูลdataเป็นที่พึ่งพา
โมดูลdataประกาศกลุ่มของคลาสหลัก มีการทดสอบภายใต้การsrc/testใช้งานนั้น การทดสอบเหล่านี้จำเป็นต้องมีการสร้างวัตถุที่ยืดยาวดังนั้นฉันจึงมีคลาสที่มีวิธียูทิลิตี้บางอย่างอยู่ในนั้นเพื่อสร้างวัตถุเหล่านี้ คลาสยูทิลิตี้นี้ ( SampleDataHelper) อยู่ในsrc/testลำดับชั้น
ฉันยังมีการทดสอบบางอย่างในconsumerโมดูลที่จำเป็นต้องสร้างวัตถุที่ยืดยาวเหล่านี้ ฉันต้องการใช้SampleDataHelperคลาสของฉัน(กำหนดไว้ในdata src/test) ในการทดสอบที่อยู่ในconsumer src/testโครงสร้างของฉัน แต่น่าเสียดายที่แม้dataเป็นพึ่งพาของconsumer, ไม่สามารถดูชั้นเรียนที่มีอยู่ภายใต้consumerdata 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ซึ่งฉันก็ไม่คิดว่าจะเป็นความคิดที่ดีเช่นกัน