1、依赖的生命周期
compile | 适用于所有阶段 |
provided | 适用于测试运行、编译阶段 |
runtime | 只在运行时使用 |
test | 只在测试时使用 |
2、依赖的传递性
当存在间接依赖的情况时,主工程对间接依赖的jar可以访问吗?这要看间接依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问
3、依赖的原则:解决jar包冲突
(1)最短路径优先
(2)先声明优先(pop.xml那里写前面:dependency标签配置的先后顺序)
4、依赖排除(多,但少用)
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.1.0</version>
<exclusions>
<exclusion>
<!--组织名称-->
<groupId>org.slf4j</groupId>
<!--项目名称-->
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
5、版本锁定
(1)使用 <dependencyManagement> 元素
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
(2)使用 <properties> 元素
声明版本:
<properties>
<spring.version>5.0.5.RELEASE</spring.version>
</properties>
通过el表达式获取
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
注意点 :在父工程中锁定版本号后 子工程不需要再声明版本号
6、打包方式
pom | Parent,它不直接产生一个可执行的jar文件,而是作为其他项目的父项目来提供配置和依赖管理。 |
jar | 生成一个可执行的jar文件 |
war | 用于生成web应用程序的打包方式,常用于Java Web开发 |
ear | 用于生成企业应用程序的打包方式,可以包含多个jar文件和相关的配置文件 |
7、maven项目聚合与拆分
(1)创建聚合工程
1)创建父工程
修改其pop文件
自动
2)创建子工程01
自动
就可以调用父类pom的junit方法了
(2)拆分工程(子模块相互调用)
1)创建子工程02,里面有一个Student类
安装到本地仓库
子工程01添加02的依赖
注意点:子模块需要相互调用 A必须先安装在本地仓库中,A 在添加依赖后才能进行调用
8、右键手动设置资源目录
9、maven查找依赖顺序
Maven在需要依赖时会按照本地仓库、私服仓库、中央仓库以及其他远程仓库(包括镜像仓库和自定义仓库)的顺序进行查找
10、基本Maven配置
<dependencies>
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
11、Serializable
一个类只有实现了Serializable接口,它的对象才是可序列化的