Maven入门知识总结


Maven基础使用相关知识。

一、Maven简介:

1、介绍
  • Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
  • 什么是Maven?
    • 简要的说Maven 是专门用于构建和管理Java相关项目的工具;Maven 本质上是一个插件执行框架,所有的工作都是由插件完成的。
  • 为什么要用它?
    • 使用Maven管理的Java 项目都有着相同的项目结构。 有一个pom.xml 用于维护当前项目都用了哪些jar包;所有的java代码都放在 src/main/java 下面; 所有的测试代码都放在src/test/java 下面 。
    • 便于统一维护jar包。
2、环境配置
项目要求
JDKMaven 3.3 要求 JDK 1.7 或以上
Maven 3.2 要求 JDK 1.6 或以上
Maven 3.0/3.1 要求 JDK 1.5 或以上

Maven 下载地址(官方文档):官方下载,Maven是Java编写的,要想使用maven必须安装jdk。

  • 第一步:进入官网

    • 5F4z3F.png
  • 第二步:配置环境变量

    • 新建系统变量 MAVEN_HOME,变量值:E:\Maven\apache-maven-3.8.3

      图片

    • 编辑系统变量 Path,添加变量值:%MAVEN_HOME%\bin

      图片

  • 通过mvn --version来测试是否成功,成功会打印出安装的 Maven 版本!

  • 之后就可以使用了!

Linux和Mac请观看:菜鸟教程详细教学。

3、Maven的安装
  1. 获取安装包,zip文件
  2. 解压缩文件,到-个目录,非中文目录
  3. 配置环境变量,如上
    5.测试maven的安装,使用mvn -v,查看maven的版本信息
4、Maven的构建
  • Maven的构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等。
  • maven支持的构建包括有:
    1. 清理:把之前项目编译的东西删除掉,我新的编译代码做准备。
    2. 编译:把程序源代码编译为执行代码,java-class文件批量的,maven可以同时把成千.上百的文件编译为class。javac不一-样,javac一 次编译一个文件。
    3. 测试:maven可以执行测试程序代码,验证你的功能是否正确。批量的,maven同时执行多个测试代码,同时测试很多功能。
    4. 报告:生成测试结果的文件,测试通过没有。
    5. 打包:把你的项目中所有的class文件,配置文件等所有资源放到一一个压缩文件中。这个压缩文件就是项目的结果文件,邇常java程序,压缩文件是jar扩展名的。对于web应用,压缩文件扩展名是. war。
    6. 安装:把5中 生成的文件jar, war安装到本机仓库
    7. 部署:把程序安装好可以执行。

二、Maven的核心概念

1、Maven 的核心概念简单介绍

Maven能够实现自动化构建是和它的内部原理分不开的,这里我们从Maven的九个核心概念入手:

  • POM
  • 约定的目录结构
  • 坐标
  • 依赖管理
  • 仓库管理
  • 生命周期
  • 插件和目标
  • 继承(了解)
  • 聚合(了解)

想要用好maven就得了解这些概念。

2、概念一:POM
  • POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件(pom.xml),包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

  • 执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

  • maven把一个项目当做一个模型使用。POM控制maven构建项目的过程,管理jar依赖。.

  • 所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。

  • pom标签大全放在了gitee上面

3、概念二:约定的目录结构
  • Maven的目录和文件的位置都是固定的。

  • Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,尽可能的遵守这样的目录结构。如下所示:

    Maven工程约定目录结构

目录目的
${basedir}存放pom.xml和所有的子目录
${basedir}/src/main/java项目的java源代码
${basedir}/src/main/resources项目的资源,比如说property文件,springmvc.xml
${basedir}/src/test/java项目的测试类,比如说Junit代码
${basedir}/src/test/resources测试用的资源
${basedir}/src/main/webapp/WEB-INFweb应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
${basedir}/target打包输出目录
${basedir}/target/classes编译输出目录
${basedir}/target/test-classes测试编译输出目录
Test.javaMaven只会自动运行符合该命名规则的测试类
~/.m2/repositoryMaven默认的本地仓库目录位置
4、概念三:坐标
  • Maven的仓库中拥有着无数的构件,每一个构件都是一个jar或者war等文件,如果没有坐标,那么我们将无法唯一标识该构件,结果就是Maven将无法帮助我们自动下载构件。所以,Maven定义了一组规则:世界上任何一个构件都可以使用Maven坐标来唯一标识。Maven坐标的主要元素包括groupId,artifactId,version,packaging(可选)和classifier(可选),通过这些元素,我们可以明确标识任何一个构件。

    • groupId:该元素定义了当前Maven项目隶属的实际项目,一般情况下该项元素都与公司域名相对应。(公司域名倒写)
    • artifactId:该元素定义了实际项目中的一个Maven Module(自定义项名称)
    • version:该元素表示当前构件的版本,包括稳定(release)版本和测试(snapshot)版本(自定义版本)
    • packaging:该元素定义Maven项目的打包方式,默认为jar,还有war和pom方式(压缩文件扩展名设置)
    • classifer(目前用不到):该元素用来帮助定义构件输出的一些附属构件,例如通过配置插件,可以在打包的同时生成-javadoc.jar和sources.jar 等构件。
  • 案例:

    	<groupId>org.example</groupId>
        <artifactId>Maven</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
    
5、概念四:依赖管理
  • 这是很通常情况下,当一个库说A就依赖于其他库说B的情况下,另一个项目Ç想用A,则该项目需要使用库中B。在Maven帮助下以避免这样的要求来发现所有需要的库。 Maven通过读取依赖项项目文件(pom.xml中),找出它们的依赖等。我们只需要在每个项目POM定义直接依赖关系。 Maven自动处理其余部分。
6、概念五:仓库管理(了解)
  • 在 Maven 的术语中,仓库是一个位置(place,Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。
  • 在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
  • Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
  • Maven 仓库有三种类型:
    • 本地仓库(local):运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
      • 默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/repository/ 的仓库目录。
      • Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。
    • 中央(central):
      • Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。
      • 中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。
      • 中央仓库的关键概念:
        • 这个仓库由 Maven 社区管理。
        • 不需要配置。
        • 需要通过网络才能访问。
    • 远程(remote):Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。
  • 依赖的范围(常用的有三个)
    • compile :默认,在构建的编译,测试,打包,部署需要。
      • 对主程序是否有效:有效
      • 对测试程序是否有效:有效
      • 是否参与打包:参与
    • test :只在测试阶段使用
      • 对主程序是否有效:无效
      • 对测试程序是否有效:有效
      • 是否参与打包:不参与
        上面的参与不参与可以用下图表示。
    • provided :在部署时,有服务器提供,项目本身不需要自带。
      • 对主程序是否有效:有效
      • 对测试程序是否有效:有效
      • 是否参与打包:不参与
      • 是否参与部署:不参与
      • 典型的例子:servlet-api.jar
7、概念六:生命周期
  • maven将项目的生命周期抽象成了3套生命周期,每套生命周期又包含多个阶段
    • clean生命周期
    • default生命周期
    • site生命周期

(1)clean生命周期(了解):当我们执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段:

pre-clean:执行一些需要在clean之前完成的工作

clean:移除所有上一次构建生成的文件

post-clean:执行一些需要在clean之后立刻完成的工作

(2)default生命周期(又称Build生命周期):

  • 这是 Maven 的主要生命周期,被用于构建应用,包括下面的 23 个阶段(主要看这7个阶段):

img

  • 阶段处理描述
    验证 validate验证项目验证项目是否正确且所有必须信息是可用的
    编译 compile执行编译源代码编译在此阶段完成
    测试 Test测试使用适当的单元测试框架(例如JUnit)运行测试。
    包装 package打包创建JAR/WAR包如在 pom.xml 中定义提及的包
    检查 verify检查对集成测试的结果进行检查,以保证质量达标
    安装 install安装安装打包的项目到本地仓库,以供其他项目使用
    部署 deploy部署拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程
  • 当一个阶段通过 Maven 命令调用时,例如 mvn compile,只有该阶段之前以及包括该阶段在内的所有阶段会被执行。

(3)site生命周期(了解):

Maven Site 插件一般用来创建新的报告文档、部署站点等。

  • pre-site:执行一些需要在生成站点文档之前完成的工作
  • site:生成项目的站点文档
  • post-site: 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy:将生成的站点文档部署到特定的服务器上
8、概念七:插件和目标
  • Maven 本质上是一个插件执行框架;所有的工作都是由插件完成的。正在寻找要执行的特定目标?此页面列出了核心插件和其他插件。有构建和报告插件:

    • 构建插件将在构建期间执行,它们应该<build/>在 POM的元素中进行配置。
    • 报告插件将在站点生成期间执行,它们应该<reporting/>在 POM的元素中进行配置。因为报告插件的结果是生成站点的一部分,所以报告插件应该国际化和本地化。
  • Maven中一些插件的使用方法:官网.

9、Maven中的常用命令
  • maven独立使用,通过命令,完成maven的生命周期的执行.
  • maven可以使用命令,完成项目的清理,编译,测试等等

1.mvn clean 清空产生的项目( target里)

2.mvn compile 编译源代码

3.mvn install 在本地repository中安装jar(包含mvn compile,mvn package,然后上传到本地仓库)

4.mvn deploy 上传到私服(包含mvn install,然后,上传到私服)

5.mvn package 打包

6.mvn test 运行测试

7.mvn site 产生site

8.mvn test-compile 编译测试代码

9.mvn -Dtest package 只打包不测试

10.mvn jar:jar 只打jar包

11.mvn test -skipping compile -skipping test-compile 只测试而不编译,也不测试编译

12.mvn deploy

13.mvn source.jar 源码打包


三、基于idea使用Maven

1、在idea中设置Maven。
  • idea中内置了maven,一般不使用内置的,因为用内置修改maven的设置不方便。使用自己安装的maven,需要覆盖idea中的默认的设置。让idea指定maven安装位置等信息

  • 配置:

    • 配置当前工程的设置:

      在File—setting中:

      image-20211014183529852–Build Tools-- -Maven- - - Runner
      image-20211014184110463
      maven项目创建时,会联网下载模版文件,比较大,使 用archetypeCatalog=internal,不用下载,创建maven项 目速度快。

    • 配置以后新建工程的设置:

      在File—other setting----Setting For New Project中:

      和上面的步骤一样。

2、创建第一个JavaSE项目:
  • 第一步:
    image-20211014184725135

  • 第二步:
    image-20211014185021965

  • 第三步:

    image-20211014185108087如果没有配置Maven位置,可以在这配置,如果配置好了,直接就可以使用了。

3、创建第一个JavaWeb项目

(1)第一种:在已经创好的javaSE项目中:右击项目名字-----Add Framework Support----钩住Web Application----点击ok

(2)第二种:在创建Maven项目的时候,勾选Web-app模板

image-20211014185657237

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值