Maven介绍
- Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
- 能解决的问题:构建工程,管理 jar包,编译代码,自动运行单元测试,打包,生成报表,部署项目,生成 Web 站点
- 例如:maven工程的大小比普通的工程要小很多,因为maven工程中不放置jar包,只放置jar包坐标节省了很多jar包所占空间
- maven的依赖管理:
- maven 工程中不直接将 jar 包导入到工程中
- 是通过在 pom.xml 文件中添加所需 jar包的坐标,需要用到 jar 包的时候,
- 到一个专门用于”存放 jar 包的仓库”(maven 仓库)中根据坐标从而找到这些 jar 包,再把这些 jar 包拿去运行。
- 项目的一键构建:项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理
Maven的使用
- Maven的安装
- 下载:官网 安装:直接解压即可
- maven目录:
- bin:存放mavenn 的命令,比如的 mvn tomcat:run
- boot:存放了一些 maven 本身的引导程序,如类加载器等
- conf:存放了 maven 的一些配置文件,如 setting.xml 文件
- lib:存放了 maven 本身运行所需的一些 jar 包
- maven目录:
- maven的使用还需要依赖JDK
- 配置JAVA_HOME/bin到环境变量path下
- 配置MAVEN_HOME
- 配置MAVEN_HOME到/bin到path下
- 测试maven软件版本:
- 通过cmd中的:mvn -v 检查maven是否安装成功
- 下载:官网 安装:直接解压即可
- maven仓库
- 分类:
- 本地仓库:用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找默认本地仓库位置在
${user.dir}/.m2/repository
,${user.dir}
表示 windows 用户目录。 - 远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。公司内经常有。
- 中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。
- 本地仓库:用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找默认本地仓库位置在
- maven本地仓库的配置:
- MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置
- MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置
- 分类:
- maven工程的认识:
- 一个maven工程的目录结构:
- 如果是普通的java工程就没有webapp目录
- 一个maven工程的目录结构:
maven常用命令
- maven工程的运行:进入 maven 工程目录(当前目录有 pom.xml 文件),运行 tomcat:run 命令。
- 分类:
- compile:编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target目录下。
- test:测试命令 mvn test,会执行 src/test/java 下的单元测试类。
- clean:清理命令,执行 clean 会删除 target 目录及内容。
- package:打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war包。
- install:安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。
- 注意:当后面的命令执行时,前面的操作过程也都会自动执行,
- maven指令的生命周期:maven 对项目构建过程分为三套相互独立的生命周期
- Clean Lifecycle 在进行真正的构建之前进行一些清理工作
- Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等
- Site Lifecycle 生成项目报告,站点,发布站点
- maven 的概念模型:
- 项目对象模型 (Project Object Model):一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、插件目标等。
- 依赖管理系统(Dependency Management System):通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。通过在 pom.xml 中定义依赖即可
- 一个项目生命周期(Project Lifecycle):使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven 将这些过程规范为一个生命周期
- 插件(plugin)目标(goal):maven 管理项目生命周期过程都是基于插件完成的。
- idea开发maven项目:
- 配置idea中的maven:
- 使用骨架创建好一个maven项目
- 创建servlet要配置依赖jar包: servlet-api-xxx.jar 包放进来,作为 maven 工程应当添加 servlet 的坐标,从而导入它的 jar
- pom.xml 文件添加坐标:添加
<dependency>
依赖 - 添加tomcat7插件:
- 点击 idea 最右侧 Maven Projects,然后点击M按钮输入mvn tomcat7:run 命令直接运行项目
- 不知道jar坐标时:从maven中央仓库搜索
- 配置idea中的maven:
- 依赖范围:
- 默认引入 的 jar 包 ------- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
- servlet-api 、jsp-api ------- provided (编译、测试 有效, 运行时无效 防止和 tomcat 下 jar 冲突)
- jdbc 驱动 jar 包 ---- runtime (测试、运行 有效 )
- junit ----- test (测试有效)
- 依赖范围由强到弱的顺序是:compile>provided>runtime>test