欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Maven 学习笔记(一)项目构建 | 相关概念 | GAV坐标 | 依赖管理

最编程 2024-01-02 11:14:20
...

文章目录

  • 参考资料
  • 运行环境
  • 一、Maven概述
    • 1.1 简介
    • 1.2 作用
    • 1.3 原理
  • 二、Maven相关概念
    • 2.1 pom.xml的由来
    • 2.2 GAV坐标
    • 2.3 构建和自动化构建
      • Maven常见命令以及说明
    • 2.4 项目关系
    • 2.5 统一管理目标JAR包的版本
    • 2.6 依赖管理
    • 2.7 配置Maven本地仓库
    • 2.8 添加国内阿里云镜像
  • 三、基于 IDEA 开发 Maven工程
    • 3.1 下载Maven压缩包
    • 3.2 设置 Maven
    • 3.3 添加Maven工程的两种方式
      • 方式一:创建新项目时选择Maven
      • 方式二:给当前项目添加Maven支持
  • 四、总结

参考资料


SPOC

运行环境


  • Maven3.8
  • JDK8
  • IDEA 2021.1 专业版

一、Maven概述


1.1 简介

传统Java开发局限性

  • 新建每个项目都要手动导入JAR包
    Jar包之间可能相互依赖
    Jar包之间可能相互冲突
    每个项目都要导包,几遍是同类型的项目

  • 项目层面
    一个大型项目可能需要分成多个模块,模块之间如何协调和访问
    打包麻烦

Maven是一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理

常见的项目构建工具除了Maven还有:Make、Ant、Gradle

目前,Maven最常用,而Gradle逐渐流行起来

1.2 作用

Maven 统一集中管理好所有的依赖包,不需要程序员再去寻找。

对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。
Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。

Maven 可以统一每个项目的构建过程,实现不同项目的兼容性管理。

Maven支持自动构建,包括构建,编译、测试、运行、打包、安装、部署六个环节

1.3 原理

Maven项目依赖的环境(Jar)包都在仓库中(Ant项目依赖的jar包需要手动导入),依赖不是导入

*仓库,管理者全部Java产品的Jar包

默认:https://repo1.maven.org/maven2/ 镜像

本地仓库:项目依赖的库
在这里插入图片描述
当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,若本地仓库有则返回,如果没有则从*仓库中获取包,并在本地库中保存

二、Maven相关概念


2.1 pom.xml的由来

pom 其实是 Project Object Model 的缩写,即项目对象模型。

作用:将Java工程的相关信息封装成对象作为便于操作和管理的模型。

Maven工程的核心配置就是通过该文件的

现 JavaEE开发领域普遍认同的观点: 约定 > 配置 > 编码,意思是能用配置解决的问题就不编码,能基于约定的就不配置,而Maven正是因为指定了、约定了文件保存的目录才能够对Java工程进行自动化构建。

2.2 GAV坐标

在pom.xml中,通常使用如下三个向量在Maven的仓库中唯一标识一个Maven工程

向量名称 作用描述
groupId 公司或组织的域名倒序+当前项目名称,比如:com.uni.hello
artifactId 当前项目的模块名称
version 当前模块的版本,默认为1.0-SNAPSHOT,意为开发中的1.0版本

如何通过坐标在本地仓库查找jar包?

将GAV三个坐标按序连接,到仓库中查找,比如 com/uni/hello/1.0-SNAPSHOP.jar

注:自己的 Maven工程必须执行安装操作才会进入到本地仓库,安装的命令是 mvn install

2.3 构建和自动化构建

以Web工程为例:

  • 通过浏览器访问Java程序时就必须将包含Java程序的Web工程编译的结果"拿" 到服务器上的指定目录下,并启动服务器才行。这个“拿”的过程称为 部署
  • Web工程中除了Java程序和JSP/HTML页面、图片等静态资源外,还包括第三方框架的jar包以及各种各样的配置文件。所有的这些资源都必须按照正确的目录结构部署到服务器上,项目才可以正常运行。

构建 就是以我们编写的Java代码、配置框架文件、国际化等其他资源文件、JSP页面和图片等静态资源作为“原材料”,去“生产”出一个可运行项目的过程。

项目构建所需要的环节主要有六个,分别是:

清理 -> 编译 -> 测试 -> 报告 -> 打包 -> 部署

显然,如果手动的构建一个项目,还是比较麻烦的。

而Maven则支持自动化构建,其本质是:可以自动将上述构建过程从起点一直执行到终点

比如:mvn install 命令,(在工程POM文件所在位置)

它的租用是在本地仓库生成当前项目的jar包,其他项目就可以直接依赖这个jar包。

Maven常见命令以及说明

Maven命令 作用描述
mvn clean 清理,将以前编译得到的旧的 class 字节码文件删除
mvn compile 编译,将Java 源程序编译成 class 字节码文件。
mvn test 测试,并生成测试报告
mvn package 动态 web工程打 war包,Java工程打 jar 包。
mvn install 将项目生成 jar 包放在仓库中,以便别的模块调用

如何使用这些命令?

首先要记住一点,mvn命令需要在有pom.xml的文件位置里执行,所以一般在IDEA里可以直接进行Maven的操作。

其次,如果想通过命令行执行Maven命令记得配置环境变量,和JDK环境变量配置一样,先配置MAVEN_HOME指定Maven的路径,然后在系统变量Path里添加MAVEN_HOME/bin,因为可执行的脚本mvn就是在这个路径中的,配置过后在任何位置都可以使用mvn命令了,不过在打包的时候记得要在pom.xml所在的目录下。

IDEA集成了Maven的环境,自带Mavne管理的插件,所以不需要去手动输入这些命令

在这里插入图片描述
IDEA提供的Maven插件通常在右侧的工具栏中,可以看到它提供了所有的生命周期,若想执行哪一个,双击即可

2.4 项目关系

继承关系: Maven项目,是在pom.xml文件中加入依赖关系,其中的标签<dependency>则可以把其他项目的jar引入到当前的项目。或者是自动引入其他项目所依赖的另外项目

聚合关系: 大项目分成几个模块项目,一般有一个统一的父项目领导。

  • 父项目是pom类型
  • 子项目为jar或者war,若子项目还是其他项目的父项目,那么该子项目也可一定是pom类型
  • 有继承关系后,子项目中会出现<parent>标签。若果子项目的<groupId><version>和父项目相同࿰