maven中pom.xml中配置整理: groupId、artifactId、parent、dependency、dependencyManagement區別


1 <groupId>com.mycompany.commonmaven</groupId> 
2 <artifactId>commonmaven</artifactId> 
3 <version>0.0.1-SNAPSHOT</version> 
4 <packaging>jar</packaging> 
5 <name>common_maven</name>

 

groupId 定義了項目屬於哪個組,舉個例子,如果你的公司是mycom,有一個項目為myapp,那么groupId就應該是com.mycom.myapp.

artifacted 定義了當前maven項目在組中唯一的ID,比如,myapp-util,myapp-domain,myapp-web等。

version 指定了myapp項目的當前版本,SNAPSHOT意為快照,說明該項目還處於開發中,是不穩定的版本

 

packaging 打包的時候是打成一個jar包

name 聲明了一個對於用戶更為友好的項目名稱,不是必須的,推薦為每個pom聲明name,以方便信息交流。

-------------------------------------------------------------------------

A項目作為一個公共項目,被B項目和C項目所依賴,

B以parent的方式,

C以dependency的形式。

項目A 、 POM.XML的配置

 1 <groupId>com.mycompany</groupId>
 2 <artifactId>test1</artifactId>
 3 <version>1.0-SNAPSHOT</version>
 4 <packaging>war</packaging>
 5 
 6 <dependencies>
 7 <dependency>
 8 <groupId>org.apache.commons</groupId>
 9 <artifactId>commons-lang3</artifactId>
10 <version>3.7</version>
11 </dependency>
12 </dependencies>

 

項目B 、POM.XML的配置

 1 <groupId>com.mycompany</groupId>
 2 <artifactId>test15</artifactId>
 3 <version>1.0-SNAPSHOT</version>
 4 <packaging>war</packaging>
 5 
 6 <parent>
 7 <groupId>com.mycompany</groupId>
 8 <artifactId>test1</artifactId>
 9 <version>1.0-SNAPSHOT</version>
10 </parent>

 

項目C 、 POM.XML的配置

 1 <groupId>com.mycompany</groupId>
 2 <artifactId>test20</artifactId>
 3 <version>1.0-SNAPSHOT</version>
 4 <packaging>war</packaging>
 5 
 6 <dependencies>
 7 <dependency>
 8 <groupId>com.mycompany</groupId>
 9 <artifactId>test1</artifactId>
10 <version>1.0-SNAPSHOT</version>
11 </dependency>
12 </dependencies>

 

最后可以發現:

B中,通過<parent>引用的項目A,可以使用A項目中<dependency>中依賴的StringUtils的方法,但是不能調用A項目中自己定義的類和方法,

C中,通過<dependency>依賴的A,兩者卻都可以調用。

 

然后說下dependencyManagement

 1 <dependencyManagement> 
 2 <dependencies> 
 3 <dependency> 
 4 <groupId>org.springframework</groupId> 
 5 <artifactId>spring-core</artifactId> 
 6 <version>3.2.7</version> 
 7 </dependency> 
 8 </dependencies> 
 9 </dependencyManagement> 
10 
11 
12 <dependencies> 
13 <dependency> 
14 <groupId>org.springframework</groupId> 
15 <artifactId>spring-core</artifactId> 
16 </dependency> 
17 </dependencies>

1.在同一個pom文件下,如果<dependencies>和<dependencyManagement>中都對該jar做了依賴,以<dependencies>的為准,

    優先級高於<dependencyManagement>。若前者沒有對其依賴,而后者對其有依賴,則以后者為准。

    <dependencyManagement>里只是聲明依賴,並不實現引入.

2.在不同的pom文件中,存在父子相互依賴關系的,父項目的pom中<dependencyManagement>中對該jar做了依賴,而子項目中<dependencies>又依賴了該jar,

    如果子項目中沒有指定<version>和<scope>,則繼承父項目中該jar的<version>和<scope>。如果子項目中指定了<version>和<scope>,以子項目的為准。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM