我試圖定義在pom.xml中的數據時遵循最佳實踐,所以我開始尋找到Spring源代碼,我已經看到:行家 - 傳遞依賴
<project xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<packaging>jar</packaging>
<version>3.1.1.RELEASE</version>
.....
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
---
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<scope>test</scope>
</dependency>
-----
但是,彈簧豆也依賴於log4j。
對於最佳實踐方法,您可以告訴我,您應該在多大程度上依賴傳遞性依賴?
我在問這個,因爲我的第一個想法是不重新聲明log4j依賴項,因爲spring-beans已經聲明瞭它。
devBinnoh嗨,關於「log4j的是申報‘測試’的範圍,也不會敲定輸出(JAR /戰爭......)的一部分。因此,當彈簧bean依賴log4j進行測試(範圍),這並不意味着在提供的或運行時(範圍)使用spring-beans的項目存在傳遞依賴性。「:我已經檢查過,如果依賴於事實junit依賴是傳遞性的......對於spring的用法,這可能是其他一些解釋嗎? – Roxana 2013-03-03 18:02:18
是的,你說得對。在這種情況下,Log4j依賴於傳遞依賴。爲什麼?!第二部分是通過「依賴管理」實現的傳遞依賴。當你「不指定」依賴的版本號時,你依靠「其他」來指定它,因此它是函數依賴。 我的答案的第一部分是指出這些依賴關係的範圍,知道範圍只能在其範圍上傳遞。但是,對於春天,我認爲第二部分適用。 – devBinnooh 2013-03-04 16:19:03