maven中pom.xml中配置整理: groupId、artifactId、parent、dependency、dependencyManagement区别
maven中pom.xml中配置整理: groupId、artifactId、parent、dependency、dependencyManagement区别
<groupId>com.mycompany.commonmavengroupId> <artifactId>commonmavenartifactId> <version>0.0.1-SNAPSHOTversion> <packaging>jarpackaging> <name>common_mavenname>
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的配置
<groupId>com.mycompanygroupId> <artifactId>test1artifactId> <version>1.0-SNAPSHOTversion> <packaging>warpackaging>
<dependencies> <dependency> <groupId>org.apache.commonsgroupId> <artifactId>commons-lang3artifactId> <version>3.7version> dependency> dependencies>
项目B 、POM.XML的配置
<groupId>com.mycompanygroupId> <artifactId>test15artifactId> <version>1.0-SNAPSHOTversion> <packaging>warpackaging> <parent> <groupId>com.mycompanygroupId> <artifactId>test1artifactId> <version>1.0-SNAPSHOTversion> parent>
项目C 、 POM.XML的配置
<groupId>com.mycompanygroupId> <artifactId>test20artifactId> <version>1.0-SNAPSHOTversion> <packaging>warpackaging> <dependencies> <dependency> <groupId>com.mycompanygroupId> <artifactId>test1artifactId> <version>1.0-SNAPSHOTversion> dependency> dependencies>
最后可以发现:
B中,通过
C中,通过
然后说下dependencyManagement
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-coreartifactId> <version>3.2.7version> dependency> dependencies> dependencyManagement> <dependencies> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-coreartifactId> dependency> dependencies>
1.在同一个pom文件下,如果
优先级高于
2.在不同的pom文件中,存在父子相互依赖关系的,父项目的pom中
如果子项目中没有指定