【IDEA】Maven的安装配置
转载自:https://blog.csdn.net/qq_35501660/article/details/84660256
1、maven是什么
maven翻译为“专家”,“内行”。Maven是Apache下的一个纯java开发的开源项目,它是一个项目管理工具,使用maven对java项目进行构建、依赖管理。当前使用Maven的项目在持续增长。
2、什么是项目构建
项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程
2.1、传统项目构建过程
传统的使用eclipse构建项目的过程如下:
构建过程如下:
1)在IDEA中创建一个java web工程
2)在工程中编写源代码及配置文件等
3)对源代码进行编译,java文件编译成class文件
4)执行Junit单元测试
5)将工程打成war包部署至tomcat运行
2.2、maven项目构建过程
Maven将项目构建的过程标准化,每个阶段使用一个命令完成,下面展示了构建过程的一些阶段,大概了解下
上图中部分阶段命令如下
清理阶段对应Maven的命令是clean,清理输出的class文件
编译阶段对应maven的命令式是compile,将Java代码编译成class文件
打包阶段对应maven命令是package,Java工程可以打包成Jar包,web工程可以打开war包
运行一个maven工程(web工程) 需要一个命令 tomat.run
Maven工程结构的有点:
1、一个命令完成构建、运行,方便快捷。
2、maven对每个构建阶段进行规范,非常有利于大型团队协作开发
3、什么是依赖管理
什么是依赖?一个Java项目可能要使用一些第三方的Jar包才能运行,那么我们
说这个Java项目依赖了这些第三方的jar包.
举个例子:一个crm系统.它的架构是ssh框架,该crm项目依赖ssh框架,具体它依的Hibernate Spring Structs2
什么是依赖管理?就是对项目所有依赖的Jar包进行规范化管理
3.1、传统项目的依赖管理
传统的项目工程要管理所依赖的jar包完全依靠人工进行,程序员从网上下载Jar包添加到项目工程中去,如下图:程序员手工将Hibernate等框架依赖的jar包添加到工程的WEB-INF/lib目录下
手工拷贝jar包添加到工程中的问题是:
1.没有队jar包版本的统一管理,容易导致版本冲突
2.从网上找jar包非常不方便,有些Jar包找不到
3.jar包添加到工程中导致工程过大
3.2、maven项目的依赖管理
maven项目管理的Jar不需要手动想工程添加jar包,只需要在pom.xml(maven工程的配置文件) 添加jar包的坐标,自动从Maven仓库中下载jar包 运行 ,如下图
使用maven以来管理添加jar包的好处:
1.通过pom.xml文件对Jar包进行统一的管理,可以避免版本冲突
2.maven团队维护了一个非常全的maven仓库,里面包括了当前使用的jar包,maven工程可以自动从maven仓库下载jar包,非常方便
4、使用maven的好处
通过上边介绍传统项目和maven项目在项目构建以及依赖管理方面的区域,maven有如下的好处
1.一步构建
maven对项目构建过程进行标准化,通过一个命令即可完成构建过程.
2.依赖管理
maven过程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不容易出错
3.maven的跨平台,可在window linux 上使用
4. maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用Maven来构建项目
5、Maven的下载使用
5.1、Maven的下载
从该网站 http://maven.apache.org/download.cgi 下载
2.安装-解压即可 注意不要解压在中文路径下
3.下面是解压后的目录
5.2、配置Maven
在环境变量中,新建变量名 MAVEN_HOME值为Maven的安装路径
然后在PATH中引用你的MAVEN_HOME 如下图
5.3、验证安装是否正确
查看是否配置成功可以在shell中数如 mvn -v出现如下图所示说明配置成功,如果有时出现的不是本地命令,也可以用管理员省份打开shell重试
6、maven仓库
maven仓库的工作需要从仓库下载一些jar包,如下图所示,本地的项目A,项目B等都会通过Maven软件从远程仓库下载Jar包保存到本地的仓库上。本地仓库,就是本地文件夹,当第二次需要此jar包的时候就不再需要从远程仓库下载了,因为本地仓库已经存在,本地仓库类似于缓存的存在。
本地仓库:用来存储从远程仓库或*仓库下载的插件和jar包,项目使用一些差的软件或jar包,优先从本地仓库查找
默认本地仓库位置在${user.dir}/.m2/repository,${user.dir}表示windows用户目录。
远程仓库:如果本地需要插件或jar包,本地仓库没有,则去远程仓库去下载
*仓库:在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2,它是*仓库,服务于整个互联网,它是由maven团队自己维护,里面存储了非常全的Jar包,它包含了世界上大部分流行的开源项目构件
6.1、配置本地仓库
在任意盘符下新建一个目录作为仓库
然后在Maven的安装目录下找到conf目录下的settiings.xml配置文件,打开此文件配置本地仓库的路径
本地仓库目录建立好了之后,打开settings.xml文件进行配置本地仓库
<localRepository>D:\my_maven_local_repository</localRepository>
6.2、Maven常用命令介绍
注意:运行Maven命令的时候,首先需要定位了Maven项目的目录,也就是项目的pom.xml文件所在的目录.否则,必以通过参数来制定项目的目录.
如下图所示
打开命令窗口之后,就可以手动输入Maven命令
以上是我们在控制台中输入命令来构建Maven项目,那后面我们都是会在软件中采用图形界面化的方式来运行Mave命令,比如我们的IDEA,帮我们集成好了maven项目的管理模块,那我们就可以使用IDEA来操作Maven项目了。
6.3、5重要Maven命令讲解
【compile】
compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下.
cmd进行命令状态,执行Mvn compile,如下图提示成功:
查看target目录,class文件已生成,编译完成.
【test】
test是maven工程的测试命令,会执行src/test/java下的单元测试类.
cmd执行 mvn test执行src/test/java下的单元测试类,下图为测试结果,运行一个测试用例,全部成功
【package】
package是Maven工程的打包命令,对于java工程执行package打包成jar,对于web工程打包成war.
【install】
install是maven工程的安装命令,执行install将Maven打包成jar包或war包的形式发布到本地仓库,
从运行结果中,可以看出:
当后面的命令执行时,前面的操作过程也都会自动执行
7、生命周期
三套生命周期
maven对项目构建过程氛围三套项目独立的生命周期,这里说的的是"三套",而且"相互独立",这三套周期分别是
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。
8、Maven项目股工程目录确定
使用maven创建的工程我们称之为Maven工程,maven工程具有一定的目录规范,如下:
src/main/java ---------------------存放项目的.java文件
src/main/resources ------------------存放项目资源文件,如spring , hibernate配置文件
src/test/java -----------------------存放所有单元测试.java文件,如JUnit测试类
src/test/resources ----------------测试资源文件
target -------------项目输出位置,编译后的class文件会输出到此目录
pom.xml ------------------------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项目核心配置文件
【非常重要】
Maven项目需要遵循上面的规范,我们当然可以手动去创建maven的目录结构,
不过一般我使用的是IDEA去帮我创建爱你的,不管是软件创建,还是硬件创建,都需要遵循上面的结构,
如图所示,IDEA创建的项目结构如下
8.1、pom.xml文件
一个maven工程都有一个pom.xml文件,通过pom.xml文件定义项目的坐标,项目依赖,项目信息,插件目标等.
【依赖管理系统】
通过maven的依赖管理对项目所依赖的Jar包进行统一管理.
比如:项目股依赖juni4.9,
通过在pom.xml中定义junit4.9的依赖即使用junit4.9,如下图所示是junit4.9的依赖定义:
【一个项目生命周期】
使用maven完成项目的构建,项目构建包括:清理 编译 测试 部署等过程 ,maven将这些过程规范为一个生命周期,如下所示是生命周期的各个阶段:
maven通过该执行一些简单明了即可实现上边生命周期的各个过程,比如执行 mvn compile 执行编译 执行mvn clean执行清理
【一组标准集合】
Maven将整个项目管理过程定义一组标准,比如:通过Maven构建工程有标准的目录结构,有标注你的生命周期阶段 依赖管理有标准的坐标定义等.
【插件目标】
maven管理项目生命周期过程都是基于插件完成的
9、定义maven坐标
每个Maven工程都需要定义本工程的坐标,报坐标是Maven对jar包的身份定义,比如:入门程序的的坐标定义如下:
10、下面重点介绍IDEA用来开发Maven项目
10.1、首先IDEA中配置Maven
10.2、使用IDEA来创建一个Mave项目
File -New -Project 弹出如下窗口 -选择Maven项目
下一步:
下一步:
下一步:
Finish之后,
IDEA开始创建Maven,你如果是第一次创建,需要联网,下载一些插件.