第一章 Maven介绍
1.1 什么是Maven
Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。
1.2 Maven两个经典作用
1.2.1 Maven 的依赖管理
要将项目运行起来,就得要把项目所依赖得jar包添加到工程,项目工程大小就很大,得几兆。
如果使用Maven则会发现总体上工程的大小会少很多。
因为Maven把所用到得jar包管理到了一个仓库中。它让任何想要用jar包的工程都去从仓库中引用。那么每个工程就不用自己携带jar包了。在每个项目中放置jar包在jar包仓库中的坐标即可。
这个就叫做Maven的依赖管理。
Maven 的一个核心特性就是依赖管理。当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成 一项困难的任务。Maven 展示出了它对处理这种情形的高度控制。
maven 工程中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar 包的坐标。
问题一:通过读取 pom.xml 文件中的坐标,再到仓库中找到 jar 包,会不会很慢?从而导致这种方式 不可行!
通过 pom.xml 文件配置要引入的 jar 包的坐标,再读取坐标并到仓库中加载 jar 包,这样我们就可以直接使用 jar 包了,为了解决这个过程中速度慢的问题,maven 中也有索引的概念,通 过建立索引,可以大大提高加载 jar 包的速度,使得我们认为 jar 包基本跟放在本地的工程文件中再 读取出来的速度是一样的。
1.2.2 项目的一键构建
项目往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。
构建指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理的过程。
一键构建指的是整个构建过程,使用 maven一个命令(mvn tomcat:run)可以轻松完成整个工作。
第二章 Maven的使用
2.1 Maven的安装
2.1.1 下载与安装
下载后解压即可,放在一个没有中文没有空格的路径下。
2.1.2 配置系统变量
配置 MAVEN_HOME ,变量值就是你的 maven 安装 的路径(bin 目录之前一级目录)
然后在系统变量中加入 %MAVEN_HOME%/bin
2.1.3 Maven 版本测试
mvn -v
检查maven是否安装成功。
2.2 Maven仓库
2.2.1 Maven 仓库的分类
“远程仓库”,“本地仓库”,“中央仓库”的关系
- 本地仓库:用来存储从远程仓库或中央仓库下载的插件和 jar 包,
- 默认本地仓库位置在
${user.dir}/.m2/repository
,${user.dir}
表示 windows 用户目录。
- 默认本地仓库位置在
- 远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。
- 中央仓库:在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件。
2.2.2 Maven 本地仓库的配置
在 MAVE_HOME/conf/settings.xml
文件中配置本地仓库位置(maven 的安装目录下)
打开 settings.xml文件,配置其中localRepository
标签:
1 | <localRepository>D:\software\Programing_software\maven_repository</localRepository> |
2.2.3 全局 setting 与用户 setting
maven 仓库地址、私服等配置信息需要在 setting.xml 文件中配置,分为全局配置和用户配置。
在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project 项目,它作为 maven 的全局配置。
如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在:${user.dir} /.m2/settings.xml
目录中,${user.dir}
指 windows 中的用户目录。
maven 会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。
2.3 Maven 工程的认识
2.3.1 Maven 工程的目录结构
这个目录结构不是上面那个Maven软件的目录结构。而是用Maven管理的工程的目录结构
一个项目管理起来所需要的几个组成部分都有四种:
(1)核心代码部分
(2)配置文件部分
(3)测试代码部分
(4)测试配置部分
传统项目目录结构:
src目录下存放着四种代码。打包的时候可能会发生交叉混乱。
Maven建立了一个项目的标准目录结构
第3章 Maven 常用命令
3.1 Maven 常用命令
在Maven工程下,打开命令提示符,可以输入Maven 常用命令对Maven工程进行操作。
3.1.1 mvn clean
可以把target文件夹删除掉。也就是删除之前编译的信息。
3.1.2 mvn compile
仅把src/main
目录下的代码进行编译。
3.1.3 mvn test
对src/test
下的代码进行测试。而且还把src/main
目录下的代码也进行编译
3.1.4 mvn package
对整个项目进行打包。还生成了war文件。
查看pom.xml文件就会发现,配置文件中配置了打包成war包。
3.1.5 mvn install
相当于mvn package
后,再把war包安装到了本地仓库。
3.2 Maven 指令的生命周期
Maven工程的过程
清理生命周期(Clean Lifecycle) 在进行真正的构建之前进行一些清理工作。
默认生命周期(Default Lifecycle) 构建的核心部分,编译,测试,打包,部署等等。
站点生命周期(Site Lifecycle) 生成项目报告,站点,发布站点。
3.3 Maven概念模型
Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段 (phase)中插件(plugin)目标(goal)的逻辑。
3.4 idea开发maven项目
3.4.1 在idea中配置maven
要在idea中使用maven就要配置它。
setttings里搜maven。然后填写maven主目录,设置文件路径,还有本地仓库路径。
running里面配置:-DarchetypeCatalog=internal
使得它首先从本地仓库中找包。
再对maven下的setting进行配置阿里云的镜像:
1 | <mirror> |
3.4.2 使用maven骨架创建java工程
新建maven项目就好。选择quickstart骨架。然后结束后,它不会把整个的目录创建好,需要手动补齐。
添加 resources文件。
3.4.3 使用maven无骨架创建java工程
新建maven项目就好。然后结束后,他有着默认的maven目录结构。
3.4.4 使用maven骨架创建web工程
用到了webapp骨架。创建好以后,只有src/main/webapp
目录。其他的需要自主创建。
3.5 创建一个servlet
3.5.1 指定某目录为web资源包
可以在webapp
下加入网页资源文件。要想在其他文件夹下加入网页资源文件可以把该文件设为该工程的”project structure”,“module”,然后“web”。
3.5.2 导入项目依赖的jar包
给pom.xml
加入依赖jar包。可以直接在中央仓库中找xml的写法。
这里写了一个servlet
。需要两个jar包。servlet
和 jsp
然后用 mvn tomcat:run
来运行。
发现报错
3.5.3 解决jar包冲突
因为tomcat是maven带的。它里面也带了servlet
和 jsp
。运行时把代码拿进去发现这两个对象不一样。所以会出现冲突。
为解决这个问题需要给pom.xml
里的依赖包加入一个范围。这个范围决定了该jar
包仅在写的时候不让他报错就好。
1 | <scope>provided</scope> |
这样下来就可以使得代码用tomcat里的包了。
3.5.4 maven工程运行环境修改
还可以用tomcat7,还设置了端口
1 | <plugin> |
一般这种可以设置动态模板的方式来定义。
setting ——Live templates——加号选择创建动态模板的组。然后在该组里创建模板。写入模板代码,然后定义模板使用范围XML。就可以在XML中写入tomcat7,自动导入tomcat7插件模板。
3.5.5 maven的java工程从mysql中取数据
- 先在mySQL里建立一个数据库,建立表Items,有id,name两个列
- 创建一个java工程
- 创建一个Items类,有两个私有变量。