一、Maven的概述

Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。

1.Maven的优势

没有使用Maven的web项目,是需要将各种jar包添加到工程中,如果相同架构项目有很多个,就需要将jar包复制到十个不同的项目中,导致项目占用空间大。
如果使用maven,则不需要将jar包添加到工程,而是将jar包存在maven仓库,然后引入项目中,当有多个项目,则不需要复制多次jar包,节省磁盘空间。
一、Maven的概述_第1张图片

2.Maven的下载和安装

官网下载:https://maven.apache.org/download.cgi,下载解压即可。

2.1maven目录

下载之后解压可得到如下目录:
● bin:存放了 maven 的命令,比如我们前面用到的 mvn tomcat:run
● boot:存放了一些 maven 本身的引导程序,如类加载器等
● conf:存放了 maven 的一些配置文件,如 setting.xml 文件
● lib:存放了 maven 本身运行所需的一些 jar 包
一、Maven的概述_第2张图片

2.2Maven的环境配置

  • 环境变量增加:MAVEN_HOME,同时在Path变量中添加MAVEN_HOME:%MAVEN_HOME%\bin
  • Maven的正常使用需要有JAVA_HOME的配置,mvn.cmd的脚本文件中会获取JAVA_HOME
  • maven检验是否成功:cmd打开窗口命令,输入:mvn -v,查看maven的版本和java的版本和os信息
    一、Maven的概述_第3张图片
    在这里插入图片描述在这里插入图片描述

2.3setting.xml文件的配置

在maven的conf目录下,可以进行setting.xml文件的修改进行配置。一般配置Maven的仓库地址(本地仓库)、远程仓库的地址。本地仓库用来存储jar包,一般不要放在C盘;远程仓库是当jar包在本地仓库没有的时候,去拉取远程仓库中的jar包。


  
    
<localRepository>E:\maven\mavenhostlocalRepository>
	
<mirror>
	<id>aliyunmavenid>
	<mirrorOf>*mirrorOf>
	<name>阿里云公共仓库name>
	<url>https://maven.aliyun.com/repository/publicurl>
mirror>
	
<profile>
	<id>jdk-8id>
	<activation>
	<activeByDefault>trueactiveByDefault>
	<jdk>8jdk>
	activation>
	<properties> 
	<maven.compiler.source>8maven.compiler.source> 
	<maven.compiler.target>8maven.compiler.target> 
 <maven.compiler.compilerVersion>8maven.compiler.compilerVersion> 
	properties>
profile>

3.Maven概念模型

一、Maven的概述_第4张图片Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

3.1依赖管理

依赖管理:传统的web项目将jar包放在项目中,但是maven的项目将jar包放在maven仓库中,项目中只存放jar包的坐标( 存放在pom.xml 文件中),当项目编译运行的时候,就会根据pom.xml 文件的jar包坐标从maven仓库中找到对应的jar包。
可能存在的问题:

  • maven通过读取 pom.xml 文件中的坐标,再到仓库中找到 jar 包,会不会很慢?
    ○ 通过 pom.xml 文件配置要引入的 jar 包的坐标,再读取坐标并到仓库中加载 jar 包 。 为了解决这个过程中速度慢的问题,maven 中也有索引的概念,通 过建立索引,可以大大提高加载 jar 包的速度,使得我们认为 jar 包基本跟放在本地的工程文件中再 读取出来的速度是一样的。
    一、Maven的概述_第5张图片

3.2项目对象模型(Project Object Model)

项目对象模型就是项目的pom.xml文件,通过pom.xml文件定义:项目自身信息、依赖信息、运行环境信息(tomcat、jdk信息),jar包的坐标。

3.3Maven的一键构建

  • 本地安装tomcat构建项目:编译、测试、运行、打包、安装、部署。项目放在toncat的webapp目录下,然后在bin目录下启动tomcat才可以部署项目。
  • maven的一键构建:不使用本地安装的tomcat,使用maven自带的tomcat一键构建,而是在 项目目录下,打开cmd窗口,输入命令:mvn tomcat:run 便可以完成项目部署,操作更简便。
    一、Maven的概述_第6张图片

3.4Maven的生命周期

Maven的生命周期分为三种类:
● 清理生命周期: 在进行真正的构建之前进行一些清理工作。
● 默认生命周期: 构建的核心部分,编译,测试,打包,部署等等,不包括清理,默认生命周期是比较常用的。
● 站点生命周期: 生成项目报告,站点,发布站点。
一、Maven的概述_第7张图片

4.Maven仓库

Maven仓库分为本地仓库、远程仓库、中央仓库。

  • 本地仓库
    ○ 用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包, 优先从本地仓库查找
    ○ 本地仓库默认的配置路径是:${user.home}/.m2/repository,可以通过:E:\maven\mavenhost 来修改本地仓库地址
    ○ 当项目中使用的jar包在本地仓库没有,则会从私服或则中央仓库中寻找

  • 远程仓库(私服)
    ○ 公司内部不连接外网的时候(连接外网的时候也可以),会建立一个私服,存储使用的jar包
    ○ 远程仓库的jar包可以来源于:中央仓库,或则本地仓库上传

  • 中央仓库
    ○ 包含非常全面的jar包
    ○ 可以在settings.xml中的来配置
    一、Maven的概述_第8张图片

5.Maven标准目录结构

一个项目主要分为四个部分:

  • 核心代码部分:java代码部分,会打jar包
  • 配置文件部分:不打jar包,代码和配置文件分开,不打jar包使得修改配置文件不需重新部署项目
  • 测试代码部分:单元测试部分
  • 测试配置文件部分
    Maven的标准目录结构和上述是有所类似的,如图所示:
    一、Maven的概述_第9张图片
    如果不是web项目,则没有webapp目录。

6.Maven命令

Maven命令与其生命周期有一定的联系。Maven的命令有:clean、compile、test、package、install、deploy。

  • clean
    • clean命令会删除项目中的target目录,清除项目编译信息
  • compile
    • 编译核心代码,将Maven标准目录下的:src/main/java编译为:classes,src/main/resources编译为:generated-sources
  • test
    • 可以实现compile编译核心代码的功能,还可以编译测试代码的功能, 测试java目录—>>>test-classes,测试配置文件—>>>generated-test-sources,同时执行src/test/java下的单元测试
  • package
    • 实现test编译核心代码、编译测试代码的功能,还可以打包项目(pom.xml文件中配置war、jar)
  • install
    • 可以实现package的编译核心代码、编译测试代码、打包项目的功能,还可以将项目安装到本地仓库。
  • deploy
    • 项目发布

你可能感兴趣的:(Maven,maven,java)