นี่คือปัญหาทั่วไปของฉัน:
โครงการ P ของฉันขึ้นอยู่กับ A ซึ่งขึ้นอยู่กับ B ซึ่งขึ้นอยู่กับ C ซึ่งขึ้นอยู่กับเวอร์ชัน 1.0.1 ของ D
มีปัญหากับเวอร์ชัน 1.0.1 ของ D และฉันต้องการบังคับให้ใช้โมดูลอื่น ฉันไม่รู้ว่าจะประกาศสิ่งนี้อย่างไรใน POM ของโปรเจ็กต์ของฉันเนื่องจากฉันไม่ได้เพิ่มการพึ่งพา D โดยตรง เป็น C ซึ่งประกาศการพึ่งพา D.
สำคัญ: ในกรณีนี้ไม่เพียง แต่เปลี่ยนเวอร์ชันเท่านั้น แต่ยังรวมถึงกลุ่มและสิ่งประดิษฐ์ด้วย ดังนั้นจึงไม่ใช่แค่เรื่องของการลบล้างเวอร์ชันของการอ้างอิง แต่เป็นการยกเว้นโมดูลและรวมโมดูลอื่นด้วย
ในกรณีคอนกรีต D คือ StAX ซึ่งมีข้อบกพร่อง 1.0.1ข้อผิดพลาดตามบันทึกในบั๊ก "ปัญหาได้รับการแก้ไขโดยการแทนที่ stax-api-1.0.1 (maven GroupId = stax) โดย stax-api-1.0-2 (maven GroupId = javax.xml.stream)" ดังนั้นฉัน ฉันพยายามแค่นั้น
ดังนั้น D = stax: stax-api: jar: 1.0.1 และ C = org.apache.xmlbeans: xmlbeans: jar: 2.3.0
ฉันใช้ maven 2.0.9 ในกรณีที่สำคัญ
ผลลัพธ์ของการพึ่งพา mvn: tree "
mvn dependency:tree
[..snip..]
[INFO] +- org.apache.poi:poi-ooxml:jar:3.6:compile
[INFO] | +- org.apache.poi:poi-ooxml-schemas:jar:3.6:compile
[INFO] | | +- org.apache.xmlbeans:xmlbeans:jar:2.3.0:compile
[INFO] | | | \- stax:stax-api:jar:1.0.1:compile
ใน POM ของโครงการของฉันฉันมีการพึ่งพา "A" ดังต่อไปนี้:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.6</version>
</dependency>
ขอบคุณล่วงหน้า.