Maven的安装配置+使用IDEA开发Maven项目

一.Maven的安装配置

1.maven是什么

	maven翻译为“专家”,“内行”。Maven是Apache下的一个纯java开发的开源项目,它是一个项目管理工具,使用maven对java项目进行构建、依赖管理。当前使用Maven的项
	目在持续增长。


什么是项目构建?
	项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程

2.传统项目构建过程

传统的使用IDEA构建项目的过程如下:

构建过程如下:
	1)在IDEA中创建一个java web工程
	2)在工程中编写源代码及配置文件等
	3)对源代码进行编译,java文件编译成class文件
	4)执行Junit单元测试
	5)将工程打成war包部署至tomcat运行

在这里插入图片描述

3.maven项目构建过程

maven将项目构建的过程进行标准化,每个阶段使用一个命令完成,下图展示了构建过
程的一些阶段,后面章节详细介绍每个阶段,这里先大概了解下:

在这里插入图片描述

上图中部分阶段对应命令如下:
清理阶段对应maven的命令是clean,清理输出的class文件
编译阶段对应maven的命令是compile,将java代码编译成class文件。
打包阶段对应maven的命令是package,java工程可以打成jar包,web工程可以打成war包

运行一个maven工程(web工程)需要一个命令:tomat:run

maven工程构建的优点:
1、一个命令完成构建、运行,方便快捷。
2、maven对每个构建阶段进行规范,非常有利于大型团队协作开发。

4.什么是依赖管理

什么是依赖?一个java项目可能要使用一些第三方的jar包才可以运行,那么我们说这个java项目依赖了这些第三方的jar包。
	举个例子:一个crm系统,它的架构是SSH框架,该crm项目依赖SSH框架,
	具体它依赖的Hibernate、Spring、Struts2。
	什么是依赖管理?就是对项目所有依赖的jar包进行规范化管理。

5.传统项目的依赖管理

	传统的项目工程要管理所依赖的jar包完全靠人工进行,程序员从网上下载jar包添加到项目工程中,如下图:程序员手工将Hibernate、struts2、spring的jar添加到工程中的WEB-INF/lib目录下。


手工拷贝jar包添加到工程中的问题是:
1、没有对jar包的版本统一管理,容易导致版本冲突。
2、从网上找jar包非常不方便,有些jar找不到。
3、jar包添加到工程中导致工程过大。

在这里插入图片描述

6.maven项目的依赖管理

maven项目管理所依赖的jar包不需要手动向工程添加jar包,只需要在pom.xml(maven
工程的配置文件)添加jar包的坐标,自动从maven仓库中下载jar包、运行,如下图:


使用maven依赖管理添加jar的好处:
1、通过pom.xml文件对jar包的版本进行统一管理,可避免版本冲突。
2、maven团队维护了一个非常全的maven仓库,里边包括了当前使用的jar包,maven工程可以自动从maven仓库下载jar包,非常方便。

在这里插入图片描述

7.使用maven的好处

通过上边介绍传统项目和maven项目在项目构建及依赖管理方面的区域,maven有如下的好处:

1、一步构建
maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程。
2、依赖管理
maven工程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不易出错。
3、maven的跨平台,可在window、linux上使用。
4、maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用maven来构建项目。

二.Maven的下载使用

1.Maven的下载

从该网站 http://maven.apache.org/download.cgi下载
在这里插入图片描述
安装-解压即可 注意不要解压在中文路径下

下面是解压后的目录
在这里插入图片描述

2.环境变量的配置

配置Maven
在环境变量中 新建变量名MAVEN_HOME 值为Maven的安装路径
然后在PATH中引用你的MAVAEN_HOME 如下图
在这里插入图片描述
查看是否配置成功可在黑窗口中输入 mvn –v 出现如下图所示说明配置成功
如果有时出现不是本地命令,也不是本地命令,可以用管理员身份打开黑窗口
在这里插入图片描述

二.maven仓库

1.概述

maven的工作需要从仓库下载一些jar包,如下图所示,本地的项目A、项目B等都会通过
maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,本地
仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已
经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。


下图描述了maven中仓库的类型:

在这里插入图片描述

2.本地仓库

本地仓库 :用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找 
默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows用户目录。

在这里插入图片描述

3.远程仓库

远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。
远程仓库可以在互联网内也可以在局域网内。

4.中央仓库

中央仓库 :在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的
jar包,它包含了世界上大部分流行的开源项目构件。

三.Maven常用命令介绍

1.概述

注意:运行maven命令的时候,首先需要定位到maven项目的目录,也就是项目的
pom.xml文件所在的目录。否则,必以通过参数来指定项目的目录。

Maven命令列表
mvn –version	显示版本信息
mvn clean	清理项目生产的临时文件,一般是模块下的target目录
mvn compile	编译源代码,一般编译模块下的src/main/java目录
mvn package	项目打包工具,会在模块下的target目录生成jar或war等文件
mvn test	测试命令,或执行src/test/java/下junit的测试用例.
mvn install	将打包的jar/war文件复制到你的本地仓库中,供其他模块使用
mvn deploy	将打包的文件发布到远程参考,提供其他人员进行下载依赖
mvn site	生成项目相关信息的网站
mvn eclipse:eclipse	将项目转化为Eclipse项目
mvn dependency:tree	打印出项目的整个依赖树  
mvn archetype:generate	创建Maven的普通java项目
mvn tomcat:run	在tomcat容器中运行web应用 需要插件支持

mvn jetty:run	调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用

2.生命周期(了解)

maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是: 

Clean Lifecycle 在进行真正的构建之前进行一些清理工作。 
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。

在这里插入图片描述

四.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的目录结构
当然我们一般是通过软件帮我们创建的,不管是软件创建,还是手动创建,都必须遵循Maven的目录结构
如图所示 IDEA 创建出来的Maven项目结构如下

在这里插入图片描述

2.pom.xml 文件

一个maven工程都有一个pom.xml文件,通过pom.xml文件定义项目的坐标、项目依赖、项目信息、插件目标等。

(1) 依赖管理系统(Dependency Management System)

通过maven的依赖管理对项目所依赖的jar 包进行统一管理。
比如:项目依赖junit4.9,通过在pom.xml中定义junit4.9的依赖即使用junit4.9,如下所示是junit4.9的依赖定义:
<dependencies>
	<!-- 此项目运行使用junit,所以此项目依赖junit -->
	<dependency>
		<!-- junit的项目名称 -->
		<groupId>junit</groupId>
		<!-- junit的模块名称 -->
		<artifactId>junit</artifactId>
		<!-- junit版本 -->
		<version>4.9</version>
		<!-- 依赖范围:单元测试时使用junit -->
		<scope>test</scope>
	</dependency>

(2) 一个项目生命周期(Project Lifecycle)

使用maven完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven
将这些过程规范为一个生命周期,如下所示是生命周期的各各阶段: 

在这里插入图片描述

maven通过执行一些简单命令即可实现上边生命周期的各各过程,比如执行mvn compile执行编译、执行mvn clean执行清理。

(3) 一组标准集合

maven将整个项目管理过程定义一组标准,比如:通过maven构建工程有标准的目录结
构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。

(4) 插件(plugin)目标(goal)

maven 管理项目生命周期过程都是基于插件完成的。

3.定义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项目
在这里插入图片描述
继续下一步
在这里插入图片描述
继续下一步
在这里插入图片描述
继续下一步
在这里插入图片描述
IDEA开始创建Maven项目,你如果第一次创建,要联网,要下载一些插件,你耐心等待
在这里插入图片描述

Maven项目创建好后,我们看一下目录结构,发现,有的目录IDEA并没有帮我们自动创建
需要我们手动创建,注意手动创建要符合Maven规定的目录结构
在这里插入图片描述
然后手动创建目录test和main目录

2.IDEA对Maven项目的管理

一般 Maven 的项目我们都可以脱离 IntelliJ IDEA 的项目配置功能进行独立的管理和构建的,当然我们可以通过 IntelliJ IDEA 提供的 Maven 管理工具进行项目的管理和构建
在这里插入图片描述
在这里插入图片描述
servlet引入jar包
在这里插入图片描述

3.配置Tomcat插件

下来我们可以通过tomcat插件发布我们的项目
我们得在pom.xml文件的标签内部配置一个tomcat插件

	<!-- 配置Tomcat插件 -->
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>

<configuration>
  <!--端口控制-->
  <port>9090</port>
  <!--项目路径控制意味着http://localhost:8080/abc-->
  <path>/abc</path>
  <!--编码-->
  <uriEncoding>UTF-8</uriEncoding>
</configuration>

</plugin>

在maven项目里选择:
在这里插入图片描述
注意运行之前检查你的pom.xml文件中 jsp的jia包和 servlet的jar包坐标的依赖范围要写上

成功发布出现下图
在这里插入图片描述

4.依赖范围的介绍

添加jar包的坐标时,还可以指定这个jar包将来的作用范围

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值