1 概述
1.1 Maven是什么
Maven 是 Apache 维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。它包含了一个对象模型,一组标准集合,一个依赖管理系统和用来运行定义在生命周期阶段中插件目标和逻辑。
1.2 作用
- 依赖管理:Maven的核心功能是合理叙述项目间的依赖关系,通俗点就是通过pom.xml文件的配置获取jar包而不需要手动地去添加jar包。
- 构建:脱离 IDE 环境执行构建操作。
1.2.1 构建
Java 项目开发过程中,构建指的是使用『原材料生产产品』的过程。
构建过程包含的主要的环节:
- 清理:删除上一次构建的结果,为下一次构建做好准备
- 编译:Java 源程序编译成 *.class 字节码文件
- 测试:运行提前准备好的测试程序
- 报告:针对刚才测试的结果生成一个全面的信息
- 打包
- Java工程:jar包
- Web工程:war包
- 安装:把一个 Maven 工程经过打包操作生成的 jar 包或 war 包存入 Maven 仓库
- 部署
- 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
- 部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上
1.3 jar包是什么
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。
通俗来说,jar包就是别人已经写好的类,然后对这些类进行打包(压缩)。可以将这些jar包引入到你的项目中,然后可以直接使用这些jar包中的类、方法和属性,这些jar包一般放在lib目录下。
2 下载及配置
2.1 下载
2.2 配置环境变量
3 基本概念
3.1 仓库
3.2 坐标
3.2.1 概念
3.2.2 如何获取指定jar包的坐标
3.3 项目结构
3.3.1 普通java项目的目录结构
还有最重要的pom.xml,与src位于同一级上。
3.3.2 java web项目的目录结构
3.4 项目构建命令
4 IDEA中创建Maven项目
4.1 点击new project,选择Maven选项
4.2 输入项目名称,完成项目的创建
4.3 进行maven的配置
注意: maven的版本号不能太高,否则idea中不支持;
4.4 修改pom.xml配置文件
4.5 执行maven指令
4.5.1 方式1:双击命令
4.5.2 方式2:进行配置
这种方式的优势在于可以对代码进行调试。
4 IDEA中使用Maven模板新建项目
4.1 创建java web项目
创建完成后的目录结构不够完善,需要我们自己去添加
对于不同的文件夹应该进行对应的标记,右击文件夹,选择Mark Directory as来进行设置。
4.2 安装tomcat插件
在pom.xml文件中添加插件,在右侧maven框中点击刷新引入插件。
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</build>
5 依赖管理
5.1 依赖配置
在一个项目中可以引入另一个项目的所有依赖,具体配置方式如下:
5.2 依赖传递
5.3 可选依赖
当前项目中的私有依赖,其他项目不能通过本项目引用。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
// 只需要将Optional设置为true即可
<optional>true</optional>
</dependency>
5.4 排除依赖
5.5 依赖范围
6 生命周期和插件
6.1 项目构建生命周期
Maven的构建生命周期描述的是一次构建过程中经历了多少个事件。
6.2 插件
生命周期可以理解为年龄,而插件是对应年龄应该做的事。
7 分模块开发
略
8 聚合
如果工程没有写打包方式,默认打jar包。
9 继承
maven中的继承本质上是版本号的继承,在子工程中仍需要定义依赖的groupId和atrifactId,只有定义过的依赖,在子工程中才可以使用.
9.1 在父工程中定义依赖管理
9.2 子工程中使用父工程中的依赖
- 子工程的groupId和version可以去掉,与父工程保持一致.
- 子工程中定义父工程中存在的依赖时,无需声明依赖版本.
9.3 插件管理与依赖管理同理
把父工程中的插件放到pluginManagement标签中,子工程中就不需要定义版本号.
9.4 继承与聚合的联系
10 属性
10.1 属性的类别
- 自定义属性
- 内置属性
- Setting属性
- Java系统属性
- 环境变量属性
10.2 自定义属性
10.2.1 作用
等同于定义变量,方便统一维护。
10.2.2 定义格式
10.2.3 引用格式
10.3 内置属性
10.4 Setting属性
10.5 Java系统属性
10.6 环境变量属性
11 版本管理
12 资源配置
为了更好的管理配置文件中的资源(例如jdbc.properties),将配置文件中资源可以配置到pom.xml中的自定义属性中,从而实现统一管理。
12.1 自定义属性
12.2 在配置文件中引用属性
12.3 开启配置文件加载pom属性
在build标签下配置resources标签,配置资源文件所在的文件夹,并且开启过滤。
只有开启了这一步,才能通过${}实现对自定义属性的访问。
13 多环境配置
在pom.xml中使用profiles标签创建多环境配置
13.1 加载指定环境
命令格式:指令 –P 环境定义id