讀古今文學網 > Maven實戰 > 5.1 何為Maven坐標 >

5.1 何為Maven坐標

關於坐標(Coordinate),大家最熟悉的定義應該來自於平面幾何。在一個平面坐標系中,坐標(x,y)表示該平面上與x軸距離為y,與y軸距離為x的一點,任何一個坐標都能夠唯一標識該平面中的一點。

在實際生活中,我們也可以將地址看成是一種坐標。省、市、區、街道等一系列信息同樣可以唯一標識城市中的任一居住地址和工作地址。郵局和快遞公司正是基於這樣一種坐標進行日常工作的。

對應於平面中的點和城市中的地址,Maven的世界中擁有數量非常巨大的構件,也就是平時用的一些jar、war等文件。在Maven為這些構件引入坐標概念之前,我們無法使用任何一種方式來唯一標識所有這些構件。因此,當需要用到Spring Framework依賴的時候,大家會去Spring Framework網站尋找,當需要用到log4j依賴的時候,大家又會去Apache網站尋找。又因為各個項目的網站風格迥異,大量的時間花費在了搜索、瀏覽網頁等工作上面。沒有統一的規範、統一的法則,該工作就無法自動化。重複地搜索、瀏覽網頁和下載類似的jar文件,這本就應該交給機器來做。而機器工作必須基於預定義的規則,Maven定義了這樣一組規則:世界上任何一個構件都可以使用Maven坐標唯一標識,Maven坐標的元素包括groupId、artifactId、version、packaging、classifier。現在,只要我們提供正確的坐標元素,Maven就能找到對應的構件。比如說,當需要使用Java5平台上TestNG的5.8版本時,就告訴Maven:「groupId=org.testng;artifactId=testng;version=5.8;classifier=jdk15」,Maven就會從倉庫中尋找相應的構件供我們使用。也許你會奇怪,「Maven是從哪裡下載構件的呢?」答案其實很簡單,Maven內置了一個中央倉庫的地址(http://repo1.maven.org/maven2),該中央倉庫包含了世界上大部分流行的開源項目構件,Maven會在需要的時候去那裡下載。

在我們開發自己項目的時候,也需要為其定義適當的坐標,這是Maven強制要求的。在這個基礎上,其他Maven項目才能引用該項目生成的構件,見圖5-1。

圖5-1 坐標為構件引入秩序