讀古今文學網 > Maven實戰 > 5.9.2 歸類依賴 >

5.9.2 歸類依賴

在5.3.1節中,有很多關於Spring Framework的依賴,它們分別是org.springframework:spring-core:2.5.6、org.springframework:spring-beans:2.5.6、org.springframework:spring-context:2.5.6和org.springframework:spring-context-support:2.5.6,它們是來自同一項目的不同模塊。因此,所有這些依賴的版本都是相同的,而且可以預見,如果將來需要升級Spring Framework,這些依賴的版本會一起升級。這一情況在Java中似曾相識,考慮如下簡單代碼(見代碼清單5-10)。

代碼清單5-10 Java中重複使用字面量

這兩個簡單的方程式計算圓的周長和面積,稍微有經驗的程序員一眼就會看出一個問題,使用字面量(3.14)顯然不合適,應該使用定義一個常量並在方法中使用,見代碼清單5-11。

代碼清單5-11 Java中使用常量

使用常量不僅讓代碼變得更加簡潔,更重要的是可以避免重複,在需要更改PI的值的時候,只需要修改一處,降低了錯誤發生的概率。

同理,對於account-email中這些Spring Framework來說,也應該在一個唯一的地方定義版本,並且在dependency聲明中引用這一版本。這樣,在升級Spring Framework的時候就只需要修改一處,實現方式見代碼清單5-12。

代碼清單5-12 使用Maven屬性歸類依賴

這裡簡單用到了Maven屬性(14.1節會詳細介紹Maven屬性),首先使用properties元素定義Maven屬性,該例中定義了一個springframework.version子元素,其值為2.5.6。有了這個屬性定義之後,Maven運行的時候會將POM中的所有的${springframework.version}替換成實際值2.5.6。也就是說,可以使用美元符號和大括弧環繞的方式引用Maven屬性。然後,將所有Spring Framework依賴的版本值用這一屬性引用表示。這和在Java中用常量PI替換3.14是同樣的道理,不同的只是語法。