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

文章目录参考资料运行环境一、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 设置 Maven3.3 添加Maven工程的两种方式方式一:创建新项目时选择Maven方式二:给当前项目添加Maven
摘要由CSDN通过智能技术生成

参考资料


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>和父项目相同,那么在子项目中可以不配置这两个标签
  • 继承关系 父项目 pom.xml中是看不到有哪些子项目的,在逻辑上具有父子项目关系
  • 聚合关系 可以清楚的知道有哪些子项目,通过<modules>标签

聚合配置的优势:

可以方便的将子项目发布到不同的服务器上、并配置服务器,这样与本地安装的服务器就没有关系了,比如:

在这里插入图片描述

2.5 统一管理目标JAR包的版本

案例:要引入Spring框架的部分Jar包,可以在pom.xml中进行如下配置
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值