Tôi đã gặp cùng một câu hỏi giống như bạn. Trong dự án của tôi, hãy gọi pom cha mẹ là parent.pom. cha mẹ đã xác định log4j, slf4j như sau:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-log4j12.version}</version>
</dependency>
dự án con gọi một số phụ thuộc vào child.pom. Nhưng tôi không muốn phụ thuộc log4j-1.2.x và muốn tăng phiên bản của slf4j.
So. Tôi thêm sự phụ thuộc của cha mẹ
<dependency>
<groupId>parent</groupId>
<artifactId>myartifactId</artifactId>
<version>${my parent version}</version>
</dependency>
và sử dụng trừ để loại bỏ các log4j
<dependency>
<groupId>parent</groupId>
<artifactId>myartifactId</artifactId>
<version>${my parent version}</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
và thêm rõ sự slf4j và phụ thuộc log4j2 trong pom con
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.6</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.4</version>
</dependency>
sau đó sử dụng phụ thuộc mvn: cây để hiển thị danh sách phụ thuộc, vẫn thấy log4j
[INFO] +- org.apache.kafka:kafka_2.10:jar:0.8.2.0:compile
[INFO] | +- com.yammer.metrics:metrics-core:jar:2.2.0:compile
[INFO] | +- org.scala-lang:scala-library:jar:2.10.4:compile
[INFO] | +- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
[INFO] | | +- org.slf4j:slf4j-log4j12:jar:1.7.5:compile
[INFO] | | +- log4j:log4j:jar:1.2.17:compile
tốt, chúng ta hãy thêm các loại trừ sự phụ thuộc vào điều đó ... loại bỏ anh chàng này.
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.1.1</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
sau đó chạy lại lệnh để kiểm tra danh sách phụ thuộc. ĐƯỢC! rõ ràng ~
Hy vọng rằng sẽ có thể giúp bạn:>
Một phụ lưu ý: ai đó đang làm điều tương tự và cung cấp một kho lưu trữ công cộng cho các loại như các hiện vật "trống rỗng" (http://version99.qos.ch/) . Họ sử dụng '99-empty' làm phiên bản. Mọi người xem xét cách tiếp cận được đề xuất bởi tôi có thể sử dụng điều này như là quy ước. –