maven中pom.xml中配置整理: groupId、artifactId、parent、dependency、dependencyManagement区别
maven中pom.xml中配置整理: groupId、artifactId、parent、dependency、dependencyManagement区别
<groupId>com.mycompany.commonmaven</groupId> <artifactId>commonmaven</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <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的配置
<groupId>com.mycompany</groupId> <artifactId>test1</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging>
<dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.7</version> </dependency> </dependencies>
项目B 、POM.XML的配置
<groupId>com.mycompany</groupId> <artifactId>test15</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <parent> <groupId>com.mycompany</groupId> <artifactId>test1</artifactId> <version>1.0-SNAPSHOT</version> </parent>
项目C 、 POM.XML的配置
<groupId>com.mycompany</groupId> <artifactId>test20</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>com.mycompany</groupId> <artifactId>test1</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
最后可以发现:
B中,通过<parent>引用的项目A,可以使用A项目中<dependency>中依赖的StringUtils的方法,但是不能调用A项目中自己定义的类和方法,
C中,通过<dependency>依赖的A,两者却都可以调用。
然后说下dependencyManagement
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.2.7</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </dependency> </dependencies>
1.在同一个pom文件下,如果<dependencies>和<dependencyManagement>中都对该jar做了依赖,以<dependencies>的为准,
优先级高于<dependencyManagement>。若前者没有对其依赖,而后者对其有依赖,则以后者为准。
<dependencyManagement>里只是声明依赖,并不实现引入.
2.在不同的pom文件中,存在父子相互依赖关系的,父项目的pom中<dependencyManagement>中对该jar做了依赖,而子项目中<dependencies>又依赖了该jar,
如果子项目中没有指定<version>和<scope>,则继承父项目中该jar的<version>和<scope>。如果子项目中指定了<version>和<scope>,以子项目的为准。
原文地址:https://www.cnblogs.com/lzg-blog/p/15134460.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Nginx+Tomcat搭建集群环境
- Maven环境隔离
- Lombok快速入门
- Apache Curator操作zookeeper的API使用
- 微信公众号开发-自定义菜单接口
- 基于JDK命令行工具的监控
- 基于JVisualVM的可视化监控
- 基于Btrace的监控调试
- 大数据框架—Flink与Beam
- Mybatis动态SQL
- Mybatis-Generator插件的使用与Spring集成Mybatis的配置
- Mybatis的缓存机制详解
- zookeeper基本特性与基于Linux的ZK客户端命令行学习
- Apache Curator操作zookeeper的API使用
- 使用Java API操作zookeeper的acl权限