Đây là một cây phụ thuộc được tạo ra bởi Maven 2.2.1 với mvn -o dependency:tree -Dverbose -Dincludes=log4j
giải thích "bỏ qua cho xung đột" trong maven 2 phụ thuộc cây
[INFO] [dependency:tree {execution: default-cli}]
[INFO] com.openboxes.renderingservice:common:jar:1.0
[INFO] +- org.springframework:spring:jar:2.0.4:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1:compile
[INFO] | \- log4j:log4j:jar:1.2.12:compile
[INFO] \- it.mycompany.portal:server:jar:1.5-SNAPSHOT:compile
[INFO] \- org.slf4j:slf4j-log4j12:jar:1.1.0:compile
[INFO] \- (log4j:log4j:jar:1.2.13:compile - omitted for conflict with 1.2.12)
Như bạn thấy log4j v1.2.12 được ưa thích hơn v1.2.13.
Tôi biết rằng "Maven giải quyết phiên bản xung đột với chiến lược thắng gần nhất" (xem http://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html) nhưng hai phụ thuộc này dường như ở cùng khoảng cách (hai cấp độ lồng nhau, tôi có sai không?) Vì vậy tôi mong đợi rằng gần đây được sử dụng.
Ai đó có thể giải thích kết quả này không?
Có, log4j không được khai báo rõ ràng trong POM này (và tôi nghĩ nó nên là), nhưng tôi muốn hiểu rõ hơn cách Maven hoạt động.
Thx
Đó là vấn đề, nhưng ít nhất là xác định. – TWiStErRob
https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html – daemon54