Why使用Maven:
- 一个项目就是一个工程
如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分成多个工程 - 项目中使用jar包,需要“复制”、“粘贴”项目的lib中
同样的jar包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作。借助于maven,可以将jar包保存在“仓库”中,不管在哪个项目只要使用引用即可就行 - jar包需要的时候每次都要自己准备好或到官网下载
借助于maven,可以使用统一的下载jar包规范方式 - jar包版本不一致的风险
不同的项目在使用jar包的时候,有可能会导致各个项目的jar包版本不一致,导致未执行错误。借助于maven,所有的jar包都放在“仓库”中,所有的项目都使用仓库的一份jar包。 - 一个jar包依赖其他的jar包需要自己手动加入项目中
FileUpload组件->IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar
极大的浪费了我们导入包的时间成本,也极大的增加了学习成本。借助于maven,它会自动的将依赖的jar包导入进来。 - 编译程序,把java编译为class
- 测试代码是否正确
- 打包文件(jar、war)
- 部署项目
Maven是what:
- maven 是一款服务于java平台的自动化构建工具
- 构建
构建定义:把动态的Web工程经过编译得到的编译结果部署到服务器上的整个过程。
编译:java源文件[.java]->编译->Classz字节码文件[.class]
部署:最终在sevlet容器中部署的不是动态web工程,而是编译后的文件
- 构建各环节
- 清理clean:将以前编译得到的旧文件class字节码文件删除
- 编译compile:将java源程序编译成class字节码文件
- 测试test:自动测试,自动调用junit程序
- 报告report:测试程序执行的结果
- 打包package:动态Web工程打War包,java工程打jar包
- 安装install:Maven特定的概念—–将打包得到的文件复制到“仓库”中的指定位置
- 部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行
- maven核心概念
- POM :一个文件,pom.xml (pom翻译就是项目对象模型)maven把一个项目当做一个模型使用,控制maven构建项目过程,管理jar包依赖
- 约定的目录结构:maven项目的目录和文件的位置都是规定的
- 坐标:是一个唯一的字符串,用来表示资源
- 依赖管理:管理你的项目可以使用jar文件
- 仓库管理:就是资源存放的位置
- 生命周期:maven工具构建项目的过程
- 插件和目标:执行maven构建的时候用的工具是插件
- 继承
- 聚合
安装
- 下载maven
- 配置环境变量
- 验证mvn -v 查看maven版本
IDEA 配置Maven
- Settings
VM Options : -DarchetypeCatalog=internal
- Other Settings(配置的和Settings 一样)