maven中pom.xml中配置整理: groupIdartifactIdparentdependencydependencyManagement区别

Posted 咸咸海风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven中pom.xml中配置整理: groupIdartifactIdparentdependencydependencyManagement区别相关的知识,希望对你有一定的参考价值。

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>,以子项目的为准。

以上是关于maven中pom.xml中配置整理: groupIdartifactIdparentdependencydependencyManagement区别的主要内容,如果未能解决你的问题,请参考以下文章

maven pom.xml报错

myEclipse检出的maven项目,pom.xml首行报错

Maven相关知识点整理

Maven理解

Maven POM详解

Gradle build.gradle to Maven pom.xml ,终于找到你了。