学习目标:
- 了解Maven的概念
- 了解如何使用Maven
- 了解如何构建
学习内容:
- 掌握Maven的概念
- 掌握如何使用Maven
- 掌握如何构建
学习产出:
1、Maven的概念
1)Apache软件基金会组织维护的一款自动化构建工具,专注于服务java平台的项目构建和依赖管理
2)为什么使用
-
第三方jar包
我们在使用第三方框架的时候,我们会把jar包复制粘贴到WEB-INF/lib下。每次新创建工程都要这么做,造成工作区有大量的重复文件,如果使用maven,会让每个jar包在本地仓库中只保存一份,需要jar包的工程只要以坐标的方式简单的引用一下就行了。可以大大节约空间,让项目更轻巧。 -
jar包之间的依赖关系
jar包往往不是孤立的,很多jar包需要在其他jar包的支持下才能正常工作。当我们去使用一个从未使用过的jar包,我们怎么知道这个jar包依赖于哪些其他的jar包呢?使用maven,可以自动将当前jar包所依赖的其他jar包全部导进来,无需人工参与,节约了我们大量的时间和精力。 -
获取第三方jar包
我们会使用很多的jar包,每个jar包获取的方式不尽相同。有时候找一个jar包要找遍互联网,找到的还是不规范的,不能使用。使用maven我们可以享受一个完全统一规范的jar包管理体系。 -
将项目拆分成多个工程模块
有些大型项目已经不能通过package结构来划分模块了,这时候必须将项目拆分成多个工程协同开发。
2、使用Maven- 下载
-
配置环境变量
window+R
-
修改maven配置文件,conf下的settings.xml
修改maven所在的文件路径
-
idea修改maven
坐标
使用以下三个向量在maven仓库中唯一的确定一个maven工程
groupid:公司或者组织的域名倒序+当前项目名称
artifactid:当前项目模块名称
version:当前模块版本
项目会报错,添加tomcat解决
3、构建
构建就是以我们编写的java代码、框架配置文件、国际化等其他资源文件、jsp页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目
- 清理:删除以前的编译结果,为重新编译做好准备
- 编译:将Java源程序编译为字节码文件
- 测试:针对项目中的关键点进行测试,确保项目在迭代开发中关键点的正确性
- 报告:在每一次测试后以标准的格式记录和展示测试结果
- 打包:将一个包含诸多文件的工程封装成一个压缩文件用于安装或者部署。java工程对应jar包,web工程对应war包
- 安装:在Maven环境下特指将打包的结果,就是jar包或者war包安装到本地仓库中
- 部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行
4、配置jdk版本
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
5、依赖管理
Maven中关键部分,我们使用maven主要就是使用它的依赖管理功能
依赖范围
<scope></scope>
- compli
默认,表示被依赖项目需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常会包含进去 - test
仅仅参与项目测试相关工作,打包时不会打包到项目中 - provided
不参与打包,有容器提供(比如servlet相关api,已经有tomcat提供)
6、仓库管理
- 本地仓库:为当前本机电脑上所有的maven工程服务
- 远程仓库
- 私服:架设在当前局域网环境下,为当前局域网范围内所有的maven工程服务
- 中央仓库:架设在internet上,为全世界所有的maven工程服务
- 中央仓库镜像:架设在各个大洲,为中央仓库分担流量,减轻中央仓库压力,同时更快的响应用户请求
常用命令
- compile:编译
- clean:清理
- test:测试
- package:打包
- install:安装
生命周期
clean:清理工作
- pre-clean:执行清理前的准备工作
- clean:清理上一次构建生成的所有文件
- post-clean:执行清理后需要完成的工作
- clean的生命周期的目的仅是清理项目,核心是clean阶段
default:核心工作,例如编译,测试,打包,安装等
- validate 验证项目是正确的,所有必要的信息都是可用的
- compile 编译项目源代码
- test 使用单元测试框架测试编译后的源代码
- package 获取已编译的代码,并将其打包为可发行的格式,例如JAR。
- verify获取已编译的代码,并将其打包为可发行的格式,例如JAR。
- install将包安装到本地仓库,供本地项目使用
- 将包发布到远程仓库(remote repository),方便其他开发人员和项目共享。
site:产生报告,发布站点等
- pre-site 执行一些在生成项目站点之前需要完成的工作.
- site 生成项目站点文档
- post-site执行一些在生成项目站点之后需要完成的工作.
- site-deploy 将生成的项目站点发布到服务器上
7、继承
创建父工程和创建一般的java工程操作一致,唯一需要注意的是,打包方式要设置为pom
在子工程中,调用父工程
<parent>
<!-- 父工程坐标 -->
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>xxx</version>
</parent>
创建项目