1. 程式人生 > >maven入門(7)maven項目(組件)的坐標

maven入門(7)maven項目(組件)的坐標

core 反向 插件 iteye 分享 表達方式 基礎 推薦 star

1.為什麽要定義Maven坐標
在我們開發Maven項目的時候,需要為其定義適當的坐標,這是Maven強制要求的。在這個基礎上,其他Maven項目才能應用該項目生成的構件。

2.Maven坐標詳解

Maven坐標為各種構件引入了秩序,任何一個構件都必須明確定義自己的坐標,而一組Maven坐標是通過一些元素定義的,它們是groupId,artifactId,version,packaging,class-sifer。下面是一組坐標定義:

Xml代碼 技術分享
  1. <groupId>com.mycompany.app</groupId>
  2. <artifactId>my-app</artifactId>
  3. <packaging>jar</packaging>
  4. <version>0.0.1-SNAPSHOT</version>

下面講解一下各個坐標元素:

groupId :定義當前Maven項目隸屬的實際項目。首先,Maven項目和實際項目不一定是一對一的關系。比如SpringFrameWork這一實際項目,其對應的Maven項目會有很多,如spring-core,spring-context等。這是由於Maven中模塊的概念,因此,一個實際項目往往會被劃分成很多模塊。其次,groupId不應該對應項目隸屬的組織或公司。原因很簡單,一個組織下會有很多實際項目,如果groupId只定義到組織級別,而後面我們會看到,artifactId只能定義Maven項目(模塊),那麽實際項目這個層次將難以定義。最後,groupId的表示方式與Java包名的表達方式類似,通常與域名反向一一對應。

artifactId : 該元素定義當前實際項目中的一個Maven項目(模塊),推薦的做法是使用實際項目名稱作為artifactId的前綴。比如上例中的my-app。

version : 該元素定義Maven項目當前的版本

packaging :定義Maven項目打包的方式,首先,打包方式通常與所生成構件的文件擴展名對應,如上例中的packaging為jar,最終的文件名為my-app-0.0.1-SNAPSHOT.jar。也可以打包成war, ear等。當不定義packaging的時候,Maven 會使用默認值jar

classifier: 該元素用來幫助定義構建輸出的一些附件。附屬構件與主構件對應,如上例中的主構件為my-app-0.0.1-SNAPSHOT.jar,該項目可能還會通過一些插件生成如my-app-0.0.1-SNAPSHOT-javadoc.jar,my-app-0.0.1-SNAPSHOT-sources.jar, 這樣附屬構件也就擁有了自己唯一的坐標

maven入門(7)maven項目(組件)的坐標