JavaWeb合集03-Maven

embedded/2024/10/18 9:55:21/

三、Maven

Maven是apache旗下的一一个开源项目,是一款用于管理和构建java项目的工具。

作用:

  1. 依赖管理:方便快捷的管理项目依赖的资源(jar包), 避免版本冲突问题。
  2. 统一项目结构:提供标准、统一的项目结构,maven项目。
  3. 项目构建:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式。提供统一指令(清理、编译、测试、打包、发布)

在这里插入图片描述

maven_15">1、maven模型

通过插件对项目进行测试、打包等功能,打包和编译后的文件保存到target目录下

在这里插入图片描述

仓库:用于存储资源,管理各种jar包。

本地仓库:自己计算机上的-一个目录。

中央仓库:由Maven团队维护的全球唯一-的。 仓库地址: https://repo1.maven.org/maven2/

远程仓库(私服):一般由公司团队搭建的私有仓库。

2、Maven的安装

在这里插入图片描述

2.1 Maven压缩包目录结构介绍:

在这里插入图片描述

  1. bin:存放的是可执行文件,如:测试、打包、编译等这些指令。
  2. conf:存放配置文件的,配置本地仓库和阿里云私服就就在settings.xml文件下配置
  3. lib:存放的是maven它所依赖的一些jar包文件,因为maven是基于java开发的
2.1 安装和配置步骤解析

1、修改配置本地仓库和远程仓库,直接在conf/settings.xml文件中,修改添加本地仓库路径和添加阿里云仓库。

    <!-- 本地仓库的位置 --><localRepository>D:\programme_software\JavaRuntimeEnvironment\apache-maven-3.6.3\data</localRepository><!-- 阿里云镜像 --><mirrors><mirror><id>alimaven</id><name>aliyun maven</name><!-- https://maven.aliyun.com/repository/public/ --><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>

2、环境变量的添加

复制maven的解压的路径 --> 桌面右击此电脑 --> 属性 --> 高级系统设置 --> 环境变量 --> 在系统变量下点击新建 --> 变量名为:MAVEN_HOME,变量值为:复制的maven路径 --> 确定 --> 单击变量名中的path --> 新建 --> 输入:%MAVEN_HOME%/bin --> 确定

可以去cmd命令窗口中输入:mvn -v 查看是否配置成功。

3、在IDEA中全局配置maven

1、不要打开任何项目进入IDEA–>Customize–>All settings–> Build,Execution,Deployment --> Build Tools --> Maven

2、设置IDEA使用本地安装的Maven,并修改配置文件及本地仓库路径

3、注意修改JRE版本:Runner下修改,和Compiler–>Java Compiler ,版本也改为JRE对应的版本。

在这里插入图片描述

3、Maven项目创建

在这里插入图片描述

4、Maven包管理文件

4.1 Maven坐标

Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。使用坐标来定义项目或引入项目中需要的依赖。

Maven坐标主要组成:

  1. groupld: 定义当前Maven项目隶属组织名称(通常是域名反写,例如: com.yhzy)
  2. artifactld: 定义当前Maven项目名称(通常是模块名称,例如order-service、 goods-service )
  3. version: 定义当前项目版本号

在这里插入图片描述

在这里插入图片描述

4.2 依赖配置

依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。

配置:

  1. 在pom.xml中编写标签
  2. 在标签中使用引入坐标
  3. 定义坐标的groupld, artifactld, version
  4. 点击刷新按钮,引入最新加入的坐标
    <dependencies><!--Email--><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.0</version></dependency></dependencies>

注意:

如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程会 比较耗时,耐心等待)

如果不知道依赖的坐标信息,可以到 https:/ /mvnrepository.com 中搜索。

4.3 依赖传递

依赖具有传递性,也就是,一个项目导入的依赖,可能依赖其它的依赖。比如项目A依赖项目B,项目B依赖项目C,这时B就是A的直接依赖,C就是A的间接依赖,A项目中也会导入C作为依赖。

可以在pow.xml文件中右击–>Diagrams–>Show Dependencies…,进行可视化的查看依赖之间的关系。

直接依赖:在当前项目中通过依赖配置建立的依赖关系。

间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源。

在这里插入图片描述

4.3.1 排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。如果不希望进行间接依赖,可以在引入直接依赖中添加标签:

<dependencies><!--Email--><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.0</version></dependency><!--排除依赖,可以添加多个--><Kexclusions><exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion></exclusions></dependencies>

4.4 依赖范围

依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope…</ scope >设置其作用范围。

作用范围(默认):

  1. 主程序范围有效。 (main文件夹范围内)
  2. 测试程序范围有效。 (test文件夹范围内)
  3. 是否参 与打包运行。(package指令 范围内)

如果想要修改依赖范围,可以添加标签:

在这里插入图片描述

4.5 生命周期

Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。

Maven中有3套相互独立的生命周期:

  1. clean: 清理工作。
  2. default: 核心工作,如:编译、测试、打包、安装、部署等。
  3. site:生成报告、发布站点等。

生命周期阶段常用的5个:

每套生命周期包含一些阶段 (phase) ,阶段是有顺序的,后面的阶段依赖于前面的阶段。

  1. clean:移除上一次构建生成的文件
  2. compile:编译项目源代码
  3. test:使用合适的单元测试框架运行测试(junit),运行所有单元测试
  4. package:将编译后的文件打包,如: jar、war等
  5. install:安装项目到本地仓库

在这里插入图片描述

执行指定生命周期的两种方式:

  1. 在idea中, 右侧的maven工具栏,选中对应的生命周期,双击执行。

  2. 在命令行中,通过命令执行,直接进入项目的文件夹的命令行。

    java">mvn cleanmvn compilemvn packagemvn test
    

http://www.ppmy.cn/embedded/128425.html

相关文章

大规模多传感器滑坡检测数据集,利用landsat,哨兵2,planet,无人机图像等多种传感器采集数据共2w余副图像,mask准确标注滑坡位置

大规模多传感器滑坡检测数据集&#xff0c;利用landsat&#xff0c;哨兵2&#xff0c;planet&#xff0c;无人机图像等多种传感器采集数据共2w余副图像&#xff0c;mask准确标注滑坡位置 大规模多传感器滑坡检测数据集介绍 数据集概述 名称&#xff1a;大规模多传感器滑坡检测…

【项目经验分享】Stable Diffusion生成式扩散模型毕业设计项目案例定制

关于Stable Diffusion生成式扩散模型的毕业设计题目&#xff0c;这些题目涵盖了该模型的应用、优化、创新以及与其他领域的结合&#xff1a; 基础应用与优化 Stable Diffusion生成效果与风格控制技术研究Stable Diffusion模型在图片去噪中的应用基于Stable Diffusion的高分辨…

SpringColoud GateWay 核心组件

优质博文&#xff1a;IT-BLOG-CN 【1】Route路由&#xff1a; Gateway的基本构建模块&#xff0c;它由ID、目标URL、断言集合和过滤器集合组成。如果聚合断言结果为真&#xff0c;则匹配到该路由。 Route路由-动态路由实现原理&#xff1a; 配置变化Apollo 服务地址实例变化…

如何在node.js中做快速傅立叶变换-(频谱)

在Node.js中进行快速傅立叶变换&#xff08;FFT&#xff09;&#xff0c;您可以使用现有的库来实现。以下是使用fft-js库进行FFT的示例&#xff1a; 安装依赖库&#xff1a;在您的Node.js项目中&#xff0c;使用npm安装fft-js库。 npm install fft-js const fft require(ff…

Python酷库之旅-第三方库Pandas(157)

目录 一、用法精讲 716、pandas.Timedelta.view方法 716-1、语法 716-2、参数 716-3、功能 716-4、返回值 716-5、说明 716-6、用法 716-6-1、数据准备 716-6-2、代码示例 716-6-3、结果输出 717、pandas.Timedelta.as_unit方法 717-1、语法 717-2、参数 717-3、…

新手爬虫DAY1

这个错误信息表明在你的Python程序中&#xff0c;re.search() 函数没有找到预期的匹配项&#xff0c;因此返回了 None。当你尝试在 None 对象上调用 group(1) 方法时&#xff0c;Python 抛出了一个 AttributeError。 具体来说&#xff0c;错误发生在 pc.py 文件的第6行&#x…

健康生活的重要性

在这个快节奏的时代&#xff0c;健康养生保健已成为我们不可忽视的生活课题。它不仅仅关乎日常饮食的均衡&#xff0c;更是心灵与身体的和谐共生。让我们深入探讨几个关键点&#xff0c;激发您对健康生活的思考与行动。 - 首先&#xff0c;均衡饮食是基础。 提到养生&#xff0…

每天五分钟深度学习pytorch:L1和L2范数、L1和L2归一化

本文重点 我们在另外一个专栏《机器学习和深度学习数学基础》中介绍了常用的范数,这里我们就不进行详细介绍了。这里我们只介绍,如何使用pytorch来计算L1、L2范数,以及如何计算L1和L2归一化。 L1和L2范数 torch.norm(input, p=fro, dim=None, keepdim=False, out=None, d…