Maven座標 (Coordinates)

Archetype插件通過名字為pom.xml的文件創建了一個項目。這就是項目對象模型 (POM),一個項目的聲明性描述。當Maven運行一個目標的時候,每個目標都會訪問定 義在項目POM裡的信息。當jar:jar目標需要創建一個JAR文件的時候,它通過觀察POM來 找出這個Jar文件的名字。當compiler:compile任務編譯Java源代碼為字節碼的時候, 它通過觀察POM來看是否有編譯目標的參數。目標在POM的上下文中運行。目標是我們 希望針對項目運行的動作,而項目是通過POM定義的。POM為項目命名,提供了項目的一 組唯一標識符(座標),並且通過依賴 (dependencies) ,父 (parents) 和先決條件 (prerequisite) 來定義和其它項目的關係。POM也可以自定義插件行為,提供項目相關 的社區和開發人員的信息。

Maven座標定義了一組標識,它們可以用來唯一標識一個項目,一個依賴,或者Maven POM裡的一個插件。看一下下面的POM。

com.alibaba fastjson 1.2.60 們加亮了這個項目的座標:groupId, artifactId, version和packaging。這些組合的 標識符拼成了一個項目的座標2 。2 就像任何其它的座標系統,一個Maven座標是一個地 址,即“空間”裡的某個點:從一般到特殊。當一個項目通過依賴,插件或者父項目引 用和另外一個項目關聯的時候,Maven通過座標來精確定位一個項目。Maven座標通常用 冒號來作為分隔符來書寫,像這樣的格式:
groupId:artifactId:packaging:version。 在上面的pom.xml中,它的座標可以表示為
mavenbook:my-app:jar:1.0-SNAPSHOT. 這個符號也適用於項目依賴,我們的項目依賴JUnit的3.8.1版本,它包含了一個 對junit:junit:jar:3.8.1的依賴。

groupId 團體,公司,小組,組織,項目,或者其它團體。團體標識的約定是,它以創 建這個項目的組織名稱的逆向域名(reverse domain name)開頭。來自Sonatype 的項目有一個以com.sonatype開頭的groupId,而Apache Software的項目有以 org.apache開頭的groupId。

artifactId 在groupId下的表示一個單獨項目的唯一標識符。

version 一個項目的特定版本。發佈的項目有一個固定的版本標識來指向該項目的某一個 特定的版本。而正在開發中的項

項目的打包格式也是Maven座標的重要組成部分,但是它不是項目唯一標識符的一個部 分。一個項目的
groupId:artifactId:version使之成為一個獨一無二的項目;你不能同 時有一個擁有同樣的groupId, artifactId和version標識的項目。

packaging 項目的類型,默認是jar,描述了項目打包後的輸出。類型為jar的項目產生一個 JAR文件,類型為war的項目產生一個web應用。

在其它“Maven化”項目構成的巨大空間中,的這四個元素是定位和使用某個特定項目 的關鍵因素。Maven倉庫(repositories)(公共的,私有的,和本地的)是通過這些標 識符來組織的。當一個項目被安裝到本地的Maven倉庫,它立刻能被任何其它的項目所 使用。而我們所需要做的只是,在其它項目用使用Maven的唯一座標來加入對這個特定 構件的依賴。


分享到:


相關文章: