ฉันกำลังพยายามหาวิธีจัดระเบียบโครงการ maven2 จำนวนมาก (ประมาณ 50+) เพื่อให้สามารถปรับใช้ในพื้นที่เก็บข้อมูลส่วนกลาง เมื่อใช้mvn deploy
เป้าหมายเราจำเป็นต้องระบุเป้าหมายในแท็ก distributionManagement ดังนี้:
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
ตอนนี้ฉันไม่ต้องการให้ทุก ๆ pom.xml (ของ 50+) มีบล็อกนี้ซ้ำแล้วซ้ำเล่า แม้ว่าสิ่งแรกของฉันจะเป็นsettings.xml
ไฟล์ แต่ดูเหมือนว่าจะไม่สามารถกำหนดได้ (โดยการออกแบบ) คำถามแรกคือทำไมถึงเป็นเช่นนั้น? ถ้าเป็นไปได้ฉันสามารถระบุได้ใน settings.xml ในการแจกจ่าย maven2 ซึ่งสามารถแจกจ่ายให้กับนักพัฒนาทุกคนได้
ทางออกเดียวที่เป็นไปได้ที่ฉันพบคือการสร้างโปรเจ็กต์ master-pom สำหรับทั้งองค์กรที่มีการตั้งค่าเหล่านี้และทำให้ pom.xml อื่น ๆ ทั้งหมดขึ้นอยู่กับ master-pom นี้ผ่าน<parent>
แท็ก แต่สิ่งนี้ดูแปลก ๆ ในการสร้างหลายโมดูล:
- master configuration POM (pm)
- Project 1 parent pom (p1 with module 1 and module 2 as modules)
- Project 1 module pom (with pm as parent)
- Project 2 module pom (with pm as parent)
โดยปกติฉันอ่านเอกสารทั้งหมดว่าโมดูลปอมควรใช้ปอมแม่ไม่ใช่บางตัวที่แตกต่างกัน แต่หลังจากอ่านเว็บไซต์ maven เกี่ยวกับ Inheritance v. Aggregation ก็เขียนว่าเป็นไปได้แน่นอน
ปัญหาหนึ่งที่ฉันพบคือการสร้างไซต์ maven ซึ่งดูเหมือนจะมีปัญหากับการตั้งค่านี้ (โมดูลไม่ได้รับการเชื่อมโยงอย่างถูกต้องหากไม่มีการอ้างอิงย้อนกลับโดยตรง)
นี่เป็นแนวทางที่ถูกต้องหรือไม่? วิธีอื่นที่ชัดเจนและง่ายกว่าสำหรับปัญหานี้หรือไม่?