我會用我的真實情況來解釋這個問題。Maven 2 - 從傳遞依賴版本定義依賴版本
我使用logback 1.0.1進行日誌記錄,它包含SLF4J 1.6.4作爲依賴項。我還爲傳統日誌記錄API(java.util.logging,log4j和commons-logging)使用SLF4J API網橋,這些網橋不是顯式依賴關係。這些也必須(最好)是版本1.6.4。
試圖儘可能使我的pom.xml儘可能沒有錯誤,我想強制這些API網橋與SLF4J版本相同。我知道的唯一方法是使用版本1.6.4在我的pom.xml中手動將它們定義爲依賴項。如果我更新了logback並且引發了所需的SLF4J版本,我需要記住將橋接API更改爲正確的版本。
我可以以某種方式將傳統API的版本掛鉤到傳遞依賴關係SLF4J的版本嗎?
當前的pom.xml:
<properties>
<org.slf4j.version>1.6.4</org.slf4j.version>
</properties>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.1</version>
<!-- requires SLF4J 1.6.4 -->
</dependency>
<!-- ... -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${org.slf4j.version}</version>
<!-- here, how to bind this version value to SLF4J's version? -->
<scope>runtime</scope>
</dependency>
<!-- the other two bridge API's go here -->
</dependencies>
我看着執行者,但它不是我真正需要的東西。如果我簡單地在我的pom中定義SLF4J,我會得到相同的結果。它可以正常工作,但是不會通過logback升級「自動」,我還需要更改SLF4J版本。功能,但不是一個美麗的方式...... ;-) – user1183250 2013-02-14 11:18:16
jepp!事情是這並不妨礙人們通過直接添加它們來改變傳遞依賴的版本。如果你禁止那些你確定沒有人能夠做到這一點。但這可能不是問題:) – wemu 2013-02-14 12:17:15