一、Maven
Maven是Apache下的一个纯java开发的开源项目,它是一个项目管理工具,使用maven对java项目进行构建、依赖管理。
1.项目构建
项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程。
传统项目构建过程
1)在IDEA中创建一个java web工程
2)在工程中编写源代码及配置文件等
3)对源代码进行编译,java文件编译成class文件
4)执行Junit单元测试
5)将工程打成war包部署至tomcat运行
maven项目构建过程
maven将项目构建的过程进行标准化,每个阶段使用一个命令完成。
上图中部分阶段对应命令如下:
清理阶段对应maven的命令是clean,清理输出的class文件。
编译阶段对应maven的命令是compile,将java代码编译成class文件。
打包阶段对应maven的命令是package,java工程可以打成jar包,web工程可以打成war包。
运行一个maven工程(web工程)需要一个命令:tomat:run
- maven工程构建的优点:
(1)一个命令完成构建、运行,方便快捷。
(2)maven对每个构建阶段进行规范,非常有利于大型团队协作开发。
2.依赖管理
就是对项目所有依赖的jar包进行规范化管理。
传统项目的依赖管理
传统的项目工程要管理所依赖的jar包完全靠人工进行,程序员从网上下载jar包添加到项目工程中,添加到工程中的WEB-INF/lib目录下。
- 手工拷贝jar包添加到工程中的问题是
(1)没有对jar包的版本统一管理,容易导致版本冲突。
(2)从网上找jar包非常不方便,有些jar找不到。
(3)jar包添加到工程中导致工程过大。
maven项目的依赖管理
maven项目管理所依赖的jar包不需要手动向工程添加jar包,只需要在pom.xml(maven工程的配置文件)添加jar包的坐标,自动从maven仓库中下载jar包、运行。
- 使用maven依赖管理添加jar包的好处
(1)通过pom.xml文件对jar包的版本进行统一管理,可避免版本冲突。
(2)maven团队维护了一个非常全的maven仓库,里边包括了当前使用的jar包,maven工程可以自动从maven仓库下载jar包,非常方便。
3.使用maven的好处
- 一步构建
maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程。 - 依赖管理
maven工程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不易出错。 - maven的跨平台,可在window、linux上使用。
- maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用maven来构建项目。
二、Maven的下载,安装,配置
1.网站 http://maven.apache.org/download.cgi下载
2.安装解压即可,注意不要解压在中文路径下
3.配置Maven
在环境变量中 新建变量名MAVEN_HOME 值为Maven的安装路径
然后在PATH中引用你的MAVAEN_HOME。
4.查看配置是否成功:可在黑窗口中输入 mvn –v 出现如下图所示说明配置成功;如果有时出现不是本地命令,也不是本地命令,可以用管理员身份打开黑窗口
5.配置本地仓库
在任意盘符下新建一个目录作为仓库,然后在Maven的安装目录下找到conf目录下的settings.xml配置文件。
本地仓库目录建好后 打开 settings.xml文件进行配置本地仓库
D:\my_maven_local_repository
三、Maven项目工程目录约定
使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下:
Project
|-src
| |-main
| | |-java —— 存放项目的.java文件
| | |-resources —— 存放项目资源文件,如spring, hibernate配置文件
|-webapp —— webapp目录是web工程的主目录
|-WEB-INF
|-web.xml
| |-test
| |-java ——存放所有测试.java文件,如JUnit测试类
| |-resources —— 测试资源文件
|-target —— 目标文件输出位置例如.class、.jar、.war文件
|-pom.xml ——maven项目核心配置文件
1.pom.xml 文件
一个maven工程都有一个pom.xml文件,通过pom.xml文件定义项目的坐标、项目依赖、项目信息、插件目标等。
<!-- 依赖关系 -->
<dependencies>
<dependency>
<!-- junit的项目名称 -->
<groupId>junit</groupId>
<!-- junit的模块名称 -->
<artifactId>junit</artifactId>
<!-- junit版本 -->
<version>4.9</version>
<!-- 依赖范围:单元测试时使用junit -->
<scope>test</scope>
</dependency>
2.定义maven坐标
每个maven工程都需要定义本工程的坐标,坐标是maven对jar包的身份定义。
<!--项目名称,定义为组织名+项目名,类似包名-->
<groupId>org.westos</groupId>
<!-- 模块名称 -->
<artifactId>maven-first</artifactId>
<!-- 当前项目版本号,snapshot为快照版本即非正式版本,release为正式发布版本 -->
<version>0.0.1-SNAPSHOT</version>
<packaging > :打包类型
jar:执行package会打成jar包
war:执行package会打成war包
pom :用于maven工程的继承,通常父工程设置为pom
四、使用IDEA来开发Maven项目
1.首先在IDEA中配置Maven
2.使用IDEA创建一个Maven项目
File-New-Project 弹出如下窗口 –选择Maven项目
Maven项目创建好后,我们看一下目录结构,发现,有的目录IDEA并没有帮我们自动创建。需要我们手动创建,注意手动创建要符合Maven规定的目录结构。
3.创建目录结构,改变目录类型
4.创建一个简单的Servlet,在pom.xml文件中添加依赖jia包
Servlet会报错,是因为Servlet找不到API。我们通过在pom.xml文件中通过配置jar包坐标从仓库中找到我们所需要的jar包。
5.通过tomcat插件发布我们的项目
在pom.xml文件的标签内部配置一个tomcat插件
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
然后我们添加我们的Maven的项目
- 注意运行之前检查你的pom.xml文件中 jsp的jia包和 servlet的jar包坐标的依赖范围要写上 如下图:
如果pom.xml中jsp和servlet的jar包依赖范围配好了,出现如下图
五、搜索我们所需要的jar包
1.远程仓库
网站:http://mvnrepository.com/
搜索所需要的jar包,复制jar包坐标粘贴到过程的pom.xml文件中即可
2.本地仓库
搜索本地仓库的jar包自动添加jar包坐标
在pom.xml文件中,按alt+insert快捷键,弹出一个框
在所罗列的jar包中,选择你所需要的jar包即可。
如果本地仓库不全,可以更新一下本地仓库
3.阿里云的jar包仓库
<!-- 配置阿里云的私服下载jar包更快 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>