maven 使用介绍

下载安装

官网下载地址:https://maven.apache.org/download.cgi
在这里插入图片描述
下载完成后,直接解压(windows)
在这里插入图片描述
配置环境变量
在这里插入图片描述
在这里插入图片描述
测试是否安装成功,出现如下信息就是环境变量配置成功
在这里插入图片描述

Maven 介绍

Maven 简介

Maven 是 Apache 软件基金会组织维护的一款自动化 构建工具,专注服务于 Java 平台的项目构建 项目构建和依赖管理 依赖管理

Maven 核心概念

Maven 能够实现自动化构建是和它的内部原理分不开的,这里我们从 Maven 的九个核心概念入手,
看看 Maven 是如何实现自动化构建的
①POM
②约定的目录结构
③坐标
④依赖管理
⑤仓库管理
⑥生命周期
⑦插件和目标
⑧继承
⑨聚合

约定的目录结构

约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环,就拿自动编译来说,Maven 必须
能找到 Java 源文件,下一步才能编译,而编译之后也必须有一个准确的位置保持编译得到的字节码文件。
我们在开发中如果需要让第三方工具或框架知道我们自己创建的资源在哪,那么基本上就是两种方式:
①通过配置的形式明确告诉它
②基于第三方工具或框架的约定
Maven 对工程目录结构的要求就属于后面的一种。
在这里插入图片描述

POM

Project Object Model:项目对象模型。将 Java 工程 工程的相关信息封装为 对象作为便于操作和管理的 模型。
Maven 工程的核心配置。可以说学习 Maven 就是学习 pom.xml 文件中的配置。

坐标

使用如下三个向量在 Maven 的仓库中唯一的确定一个 Maven 工程。

  1. groupid:公司或组织的域名倒序+当前项目名称

  2. artifactId:当前项目的模块名称

  3. version:当前模块的版本

    <groupId>com.fyj.maven</groupId>
    <artifactId>Hello</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    

如何通过坐标到仓库中查找 jar 包?

  • 将 gav 三个向量连起来
    com.fyj.maven+Hello+0.0.1-SNAPSHOT
  • 以连起来的字符串作为目录结构到仓库中查找
    com/fyj/maven/Hello/0.0.1-SNAPSHOT/Hello-0.0.1-SNAPSHOT.jar
    注意:我们自己的 Maven 工程必须执行安装操作才会进入仓库。安装的命令是:mvn install

常用命令

  1. mvn clean:对项目进行清理,清理的过程中会删除删除target目录下编译的内容。

  2. mvn compile:编译项目源代码。

  3. mvn test:对项目的运行测试。

  4. mvn package:可以打包后的文件存放到项目的 target 目录下,打包好的文件通常都是编译后生成的class文件。

  5. mvn install:安装到仓库

依赖

依赖Maven 中最关键的部分,我们使用 Maven 最主要的就是使用它的依赖管理功能。要理解和掌握 Maven的依赖管理,我们只需要解决一下几个问题:

  1. 依赖的目的是什么
    当 A jar 包用到了 B jar 包中的某些类时,A 就对 B 产生了依赖,这是概念上的描述。那么如何在项目中以依赖的方式引入一个我们需要的 jar 包呢?
    答案非常简单,就是使用 dependency 标签指定被依赖 jar 包的坐标就可以了。

    <dependency>
    	<groupId> com.fyj.maven </groupId>
    	<artifactId> Hello </artifactId>
    	<version> 0.0.1- - SNAPSHOT </version>
    	<scope>compile</scope>
    </dependency>
    
  2. 依赖的范围
    大家注意到上面的依赖信息中除了目标 jar 包的坐标还有一个 scope 设置,这是依赖的范围。依赖的范围有几个可选值,我们用得到的是:compile、test、provided 三个。

    编译依赖范围(compile),该范围就是默认依赖范围,此依赖范围对 于编译、测试、运行三种classpath都有效,举个简单的例子,假如项目中有spring-core的依赖,那么spring-core不管是在编译,测试,还是运行都会被用到,因此spring-core必须是编译范围(构件默认的是编译范围,所以依赖范围是编译范围的无须显示指定)

    测试依赖范围(test),顾名思义就是针对于测试的,使用此依赖范围的依赖,只对测试classpath有效,在编译主代码和项目运行时,都将无法使用该依赖,最典型的例子就是 Junit, 构件在测试时才需要,所以它的依赖范围是测试,因此它的依赖范围需要显示指定为test ,当然不显示指定依赖范围也不会报错,但是该依赖会被加入到编译和运行的classpath中,造成不必要的浪费

    已提供依赖范围(provided) 使用该依赖范围的maven依赖,只对编译和测试的classpath有效,对运行的classpath无效,典型的例子就是servlet-api, 编译和测试该项目的时候需要该依赖,但是在运行时,web容器已经提供的该依赖,所以运行时就不再需要此依赖,如果不显示指定该依赖范围,并且容器依赖的版本和maven依赖的版本不一致的话,可能会引起版本冲突,造成不良影响。

  3. 依赖的传递性
    A 依赖 B,B 依赖 C,A 能否使用 C 呢?那要看 B 依赖 C 的范围是不是 compile,如果是则可用,否则不可用
    在这里插入图片描述

  4. 依赖的排除
    如果我们在当前工程中引入了一个依赖是 A,而 A 又依赖了 B,那么 Maven 会自动将 A 依赖的 B 引入当前工程,但是个别情况下 B 有可能是一个不稳定版,或对当前工程有不良影响。这时我们可以在引入 A 的时候将 B 排除
    在这里插入图片描述

    <dependency>
    	<groupId>com.atguigu.maven</groupId>
    	<artifactId>HelloFriend</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<type>jar</type>
    	<scope>compile</scope>
    	<exclusions>
    		<exclusion>
    			<groupId>commons- - logging</groupId>
    			<artifactId>commons- - logging</artifactId>
    		</exclusion> >
    	</exclusions>
    </dependency>
    
  5. 依赖的原则:解决 jar 包冲突
    路径最短者优先:
    A依赖B,B依赖C,同时B和C都有一个依赖jar包log4j,此时以路径最短优先,那么A就会依赖B的log4j
    在这里插入图片描述
    路径相同时先声明者优先:

    在这里插入图片描述

Maven 生命周期

生命周期和插件是Maven的两个核心概念,命令行的输入往往就对应了生命周期,如mvn package就表示执行默认生命周期阶段package。Maven的生命周期是抽象的,其实际行为都由插件来完成。Maven的生命周期是为了对所有的构建过程进行抽象和统一。

Maven拥有三套相互独立的生命周期,分别为clean、default和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,site目的是建立项目站点。

clean 生命周期

  1. pre-clean 执行一些清理前需要完成的工作。

  2. clean 清理上一次构建生成的文件。

  3. post-clean 执行一些清理后需要完成的工作。

default 生命周期

包含的操作很多,以下列出主要的:

  • process-sources 处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。

  • compile 编译项目的主代码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中。

  • process-test-sources 处理项目测试资源文件 src/main/resources。

  • test-compile 编译项目的测试代码。src/test/java。

  • test 使用单元测试框架运行测试,测试代码不会被打包或部署。

  • package 接受编译好的代码,打包成可发布的格式,如jar。

  • install 将包安装到Maven本地仓库,供本地其他Maven项目使用。

  • deploy 将最终的包复制到远程仓库。

site 生命周期

  • pre-site
  • site 生成项目站点文档。
  • post-site
  • site-deploy 将生成的项目站点发布到服务器上。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值