Maven

Maven

Maven的功能

  1. 依赖管理

    • 简单的说就是项目中的jar包不再放在项目中,而是放在Maven仓库中,项目中只存放jar包的坐标,那么就会减小项目的大小,比如如果有十个项目需要用到相同的一些jar包,那么需要在各自的项目中存放jar包,需要十份,而使用Maven,则只需要一份,放入Maven仓库中即可,项目通过对应的jar包坐标去Maven仓库中找到需要的jar包。
  2. 项目的一键构建

    • 项目往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。构建就是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给Maven进行管理。整个构建过程,使用Maven一个命令可以轻松完成整个工作。

Maven的安装

  • 与tomcat一样,去官网下载,下载完后是压缩包,然后将压缩包解压到你想要的指定位置即可完成安装。

Maven的环境变量配置

  • 与配置java变量差不多,在环境变量的系统变量中新建一个MAVEN_HOME,值为Maven的解压路径,然后编辑Path系统变量,添加%MAVEN_HOME%\bin。
  • 注意:Maven的配置需要依赖JAVA_HOME。

Maven的仓库和彼此依赖关系

  1. 本地仓库:即在自己的机器上存放jar包的Maven仓库。
  2. 远程仓库:即公司为了管理jar包所专属的一个Maven仓库。
  3. 中央仓库:即互联网中的一个大Maven仓库,存放数以亿计的jar包。
  • 关系:

    1. 如果没有远程仓库,则会先在本地仓库寻找,如果没有则再去中央仓库。(前提:联网。)
    2. 如果有远程仓库,则会先在本地仓库寻找,如果没有则再去远程仓库寻找,如果还没有则最后去中央仓库或者通过本地仓库上传。(前提:和远程仓库在一个局域网。)
  • 修改本地仓库的位置

    • 修改Maven安装目录的conf文件夹下的settings.xnl,添加<localRepository>此处为你的本地仓库的路径</localRepository>

Maven项目标准目录结构

  1. src/main/java目录 核心代码部分
  2. src/main/resources 配置文件部分
  3. src/test/java目录 测试代码部分
  4. src/test/resources 测试配置文件部分
  5. src/main/webapp 页面资源,js,css,图片等

Maven常用命令

  • mvn clean:删除本地编译后的信息,删除本地编译后的target文件夹。
  • mvn compile:编译src/main/java目录下的核心代码部分,将编译后的信息放在target文件夹。
  • mvn test:编译src/test/java目录下的测试代码部分,将编译后的信息放在target文件夹,同时也会编译src/main/java目录下的核心代码部
  • mvn package:编译核心代码部分与测试代码部分,将项目打包,信息存放在target文件夹。
  • mvn install:编译核心代码部分与测试代码部分,将项目打包,信息存放在target文件夹,将包发布到本地仓库。

Maven的生命周期

  • 默认生命周期:compile –> test –> package –> install –> deploy
  • 清理生命周期:clean
  • 站点生命周期

Maven概念模型

tmuMxe.png

IDEA集成Maven插件

  • configure –> Settings –> Maven –> 配置maven的路径以及settings.xml的路径
  • 可以在Runner的VM中添加-DarchetypeCatalog=internal保证不联网时也能创建Maven项目

使用骨架创建Maven的Java工程

  • 在创建Maven工程时勾选Create from archetype,然后选择使用的骨架即可完成创建。
  • 注意:创建完成后没有配置文件的目录,需要手动创建,创建完成后右键make directory as选择对应的配置文件类型。

不使用骨架创建Maven的Java工程

  • 创建时不勾选Create from archetype,其他与用骨架差不多
  • 创建后的项目目录结构与Maven标准目录结构差不多

使用骨架创建Maven的web工程*

  • 在创建Maven工程时勾选Create from archetype,然后选择webapp骨架即可完成创建。
  • 注意:创建完成后只有main下的webapp目录,其他都要自己创建。

解决jar包冲突

  • 可以在对应的depency中加入scope标签,标签内容为provided,意思是只在编译时生效。

Maven的依赖

  • 一个工程依赖另一个工程,会把依赖工程中的jar包传递过来,但是只有scope范围为compile的才能传递。

  • 依赖的排除:设置exclusions标签

Maven版本号统一管理

  • 在pom中设置properties标签,标签内容为自己随便取一个名字作为一个标签,然后其中的标签内容是版本号。
  • 在添加依赖的时候version标签内容可以使用${之前properties中取的名字}来控制版本号。当我们需要修改时直接修改properties即可。

Maven的继承

  • 在工程中使用的一些依赖的版本号可能不同,比如不同工程使用的junit版本号可能不同,操作可能会有些许不同,可以控制它们的版本号相同。
  • 步骤:
    1. 创建一个父工程,打包为pom类型
    2. 在子工程用parent标签声明对父工程的引用
    3. 将子工程中与父工程重复的内容删除(也可以不删)
    4. 在父工程统一管理依赖
    5. 删除子工程中依赖部分的版本号

Maven的聚合

  • 在pom中设置modules标签用于聚合,指定各个子工程的相对路径,然后在聚合工程上安装,所有子工程都会一起被安装。
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信