Trường hợp đơn giản đối với tôi: Tôi đang sử dụng 2 thư viện scala rất phổ biến nhưng xung đột: Spark SQL & JSON4s. Mỗi phụ thuộc vào các phiên bản khác nhau của trình phân tích cú pháp XML của Jackson.JAR HELL trong IDE (intelliJ), mvn-test và mvn-package: cách hợp nhất việc di chuyển phụ thuộc trong tất cả các cài đặt?
Vì không có ai ngoại trừ chương trình của riêng tôi đang sử dụng JSON4, một giải pháp đơn giản là di chuyển các gói org.json4s.jackson
và com.fasterxml.jackson
đến các vị trí mới.
Tuy nhiên, plugin maven-shade chỉ có thể thực hiện việc này trong quy trình đóng gói vì tất cả các thử nghiệm và chạy IDE xảy ra trước đó. Điều này vẫn khiến tất cả các kiểm thử thất bại, bất kể có chạy thử nghiệm mvn-test hay scala trong IDE hay không.
Có plugin nào có thể quản lý chung các chính sách di chuyển gói cho cả ba trường hợp: JAR-packaging/mvn-test/IDE-run? Tôi đã tìm kiếm trên Internet cả ngày và không thể tìm thấy câu trả lời.
Các phiên bản khác nhau của Jackson là gì? Bạn có thể ghi đè lên một trong các phụ thuộc trong tệp pom.xml của riêng mình để chỉ có một cá thể tồn tại. –
Bạn sẽ không tin điều này: 3.2.10 (Spark) so với 3.2.11 (Mã của tôi). Nếu Spark jackson được ghi đè lên 3.2.11, nó có lỗi classNotFound, nếu tôi thay đổi jackson của tôi thành 3.2.10 một số thử nghiệm và ngắt tính năng của tôi. Vì vậy, tôi đang trong tình huống khó xử bây giờ – tribbloid
Tôi chỉ nói đùa một nửa, nhưng sử dụng OSGi để tải cả hai phiên bản ... –