一篇文章学懂Maven(附带对idea中clean,validate,complie,test,package,verify,install,site,deploy用法)

Maven是一个Java项目管理工具,主要解决依赖管理和多模块项目构建问题。它通过中央仓库进行jar包统一管理,提供依赖的传递性,并具备编译、测试、打包、部署等功能。Maven的坐标由groupId、artifactId和version组成,用于唯一标识项目。项目文件目录结构清晰,仓库选址遵循特定优先级。此外,Maven指令如clean、install和deploy分别对应清理、安装和部署项目。
摘要由CSDN通过智能技术生成

Maven 学习

  • 什么是Maven

  • Maven的必要性:

由于 Java 的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以 jar 包的形式出现的,例如 Spring,SpringMVC、MyBatis、数据库驱动,等等,都是以 jar 包的形式出现的,jar 包之间会有关联,在使用一个依赖之前,还需要确定这个依赖所依赖的其他依赖,所以,当项目比较大的时候,依赖管理会变得非常麻烦臃肿,这是 Maven 解决的第一个问题。

Maven 还可以处理多模块项目。简单的项目,单模块分包处理即可,如果项目比较复杂,要做成多模块项目,例如一个电商项目有订单模块、会员模块、商品模块、支付模块...,一般来说,多模块项目,每一个模块无法独立运行,要多个模块合在一起,项目才可以运行,这个时候,借助 Maven 工具,可以实现项目的一键打包。

 

  • Maven的两大核心:
  • 依赖管理:对 jar 的统一管理(Maven 提供了一个 Maven 的中央仓库,https://mvnrepository.com/,当我们在项目中添加完依赖之后,Maven 会自动去中央仓库下载相关的依赖,并且解决依赖的依赖问题)
  • 项目构建:对项目进行编译、测试、打包、部署、上传到私服等
  • Maven坐标:

俗称 gav:使用下面三个向量子仓库中唯一定位一个 Maven 工程

    在项目中的 pom.xml 文件中,我们可以看到下面gav的定义:

    1、groupid:公司或组织域名倒序 

      <groupid>com.ys.maven</groupid>

    2、artifactid:模块名,也是实际项目的名称

      <artifactid>Maven_05</artifactid>

    3、version:当前项目的版本

      <version>0.0.1-SNAPSHOT</version>

groupId,artifactId和version:依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven根据坐标才能找到需要的依赖。

  • Maven的group-Id:

      Group-id分为三部分,每个部分以“.”相隔,第一部分是项目用途,比如用于商业的就是“com”,用于非盈利性质就是“org”,第二部分是公司名,比如“alibaba”,“jingdong”,第三部分是项目名。

Maven 的 文件目录结构:

bin binary二进制文件的简称,里面存放的一般是可执行的二进制文件

boot 里面存放启动目录的核心文件

conf 里面存放配置文件,包含核心全局配置文件settings.xml

lib   里面存放类库或者资源文件

  • Maven 仓库:

      仓库选址优先级:

本机仓库>setting.xml配置的镜像仓库>默认中央仓库

  • Maven 依赖:

      Maven依赖具有传递性

      依赖范围

     父工程可以通过pom.xml配置import属性结合dependencyManagement,强制规范子工程项目版本举例:

    父类定义如下:

         子类定义如下:

         模块聚合:

 

         总项目一般为pom项目(在 pom.xml 文件中设置)

         在modules中添加模块

         模块中定义如下:

IDEA中Maven指令含义

 

  • clean命令

清除由项目编译创建的target

  • validate命令

验证项目是否正确并且所有必要的信息均可用

  • compile命令

编译项目的源代码

  • test命令

使用合适的单元测试框架来测试编译的源代码。 这些测试不应要求将代码打包或部署

  • verify命令

对集成测试的结果进行任何检查,以确保符合质量标准

  • package命令

完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

  • install命令

完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库

  • deploy命令

完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

package,install,deploy三者关联

  • mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
  • mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
  • mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。
  • site命令

用于为Maven项目生成站点(用以生成HTML页面的模块等文档)

 

 

 

 

  • 32
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值