Dưới đây là vấn đề chung của tôi:Maven: làm thế nào để ghi đè lên phụ thuộc thêm vào một thư viện
dự án P My phụ thuộc vào A mà phụ thuộc vào B mà phụ thuộc vào C mà phụ thuộc vào phiên bản 1.0.1 của D.
Có sự cố với phiên bản 1.0.1 của D và tôi muốn buộc sử dụng mô-đun khác. Tôi không biết làm thế nào để tuyên bố điều này trong POMs của dự án của tôi kể từ khi tôi đã không được thêm một phụ thuộc vào D trực tiếp. Đó là C tuyên bố sự phụ thuộc vào D.
Quan trọng: Trong trường hợp này, không chỉ phiên bản được thay đổi, mà còn là thành phần nhóm &. Vì vậy, nó không chỉ là vấn đề ghi đè phiên bản của sự phụ thuộc, mà đúng hơn là loại trừ một mô-đun và bao gồm một mô-đun khác.
Trong trường hợp cụ thể, D là StAX có 1.0.1 có bug. Theo ghi chú trong lỗi, "các vấn đề đã được giải quyết bằng cách thay thế stax-api-1.0.1 (maven GroupId = stax) bởi stax-api-1.0-2 (maven GroupId = javax.xml.stream)" vì vậy tôi đang cố gắng điều đó.
Do đó, D = Stax: Stax-api: jar: 1.0.1 và C = org.apache.xmlbeans: XMLBeans: jar: 2.3.0
Tôi đang sử dụng maven 2.0.9 trong trường hợp nó vấn đề.
Sản lượng phụ thuộc mvn: cây"
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
Trong POM của dự án của tôi, tôi có sự phụ thuộc sau trên "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>
Cảm ơn trước
không rõ cách tôi có thể chỉ định phiên bản vì tôi không khai báo phụ thuộc vào D. Ngoài ra, liên kết đầu tiên bạn cung cấp có "Tài liệu này mô tả các yêu cầu còn lại về quản lý phụ thuộc chưa được triển khai cho Maven 2.0, đặc biệt là liên quan đến phụ thuộc transitive. " ở trên cùng. – wishihadabettername
@wishihadabettername, Như đã nói trong tài liệu khác: "Bạn rõ ràng có thể thêm phụ thuộc vào D 2.0 trong A để bắt buộc sử dụng D 2.0" –
Bạn thực sự sao chép cùng một mục nhập rất giống trong pom của riêng bạn. Trong sự phụ thuộc của bạn, hãy chỉ định một số mà bạn muốn. Điều đó sẽ ghi đè lên bất kỳ phiên bản nào được sử dụng bởi các phụ thuộc "sâu hơn". –