java项目的构建工具-Maven

黑马程序员JavaWeb开发教程

文章目录

  • 一、概述
    • 1、介绍
      • (1)介绍
      • (2)Maven的作用
      • (3)官网
      • (4)仓库
    • 2、安装
  • 二、IDEA 集成 Maven
    • 1、配置Maven环境
    • 2、创建Maven项目
      • (1)Maven坐标
    • 3、导入Maven项目
      • (1)方式一
      • (2)方式二
  • 三、 依赖管理
    • 1、 依赖配置
    • 2、依赖传递
    • 3、依赖范围
    • 4、生命周期

一、概述

1、介绍

(1)介绍

  • Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建

(2)Maven的作用

  1. 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题
  • 只需要在 pom.xml 中配置即可
  1. 统一项目结构:提供标准统一的项目结构

    在这里插入图片描述

  2. 项目构建:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式

(3)官网

  • http://maven.apache.org/

(4)仓库

  • 用于存储资源,管理各种jar包
    • 本地仓库:自己计算机上的一个目录
    • 中央仓库:有Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
    • 远程仓库(私服):一般由公司团队搭建的私有仓库

2、安装

  • Maven安装教程

二、IDEA 集成 Maven

1、配置Maven环境

  1. 全局参数的配置(如果仅配置当前工程的话,那么美创建一个新的项目就要重新配置一次)
  2. IDEA配置Maven环境

2、创建Maven项目

  • IDEA 创建Maven项目
  • 此时可能会遇到报红,可以尝试以下方法
    • 按照“IDEA配置Maven环境”的步骤重新检查一下,各种配置是否正确

    • 每次报错之后先回到本地仓库中搜索带有.lastUpdate后缀的文件全选,删除,之后再回到IDEA中重新刷新Maven项目(点击右侧工具栏中的maven,点击刷新图标)

      在这里插入图片描述

    • 除了原本的镜像尝试以下镜像,在配置文件settings.xml的mirrors 标签中填入(使用其中一个的时候,可以把另一个先注释)

      • 镜像一
<mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>
<mirror><id>central</id><name>Maven Repository Switchboard</name><url>http://repo1.maven.org/maven2/</url><mirrorOf>central</mirrorOf>
</mirror>
<mirror><id>repo2</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror><id>ibiblio</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror><id>jboss-public-repository-group</id><mirrorOf>central</mirrorOf><name>JBoss Public Repository Group</name><url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror><id>google-maven-central</id><name>Google Maven Central</name><url>https://maven-central.storage.googleapis.com</url><mirrorOf>central</mirrorOf>
</mirror>
<!-- 中央仓库在中国的镜像  -->
<mirror><id>maven.net.cn</id><name>oneof the central mirrors in china</name><url>http://maven.net.cn/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>

镜像二

<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror> 

(1)Maven坐标

  1. 什么是坐标
  • Maven中的坐标是资源的唯一表示,通过该坐标可以唯一定位资源位置
  • 使用坐标来定义项目或引入项目中需要的依赖
  1. Maven坐标主要组成
  • gruopid:定义当前Maven项目隶属组织名称(通常是域名反写)
  • artifactId:定义当前Maven项目名称(通常是模块名称)
  • version:定义当前项目版本号
    在这里插入图片描述

3、导入Maven项目

(1)方式一

  • 打开IDEA,选择右侧maven面板,点+号,选中对应项目的pom.xml文件,双击即可

    在这里插入图片描述

    • 如果没有看到相关的面板,view,Apperance,Tool Window Bars 调出来
      在这里插入图片描述

(2)方式二

  • File ,Project Structure,Moudles, import Module, Modules, pom.xml

    在这里插入图片描述

  • 从IDEA中移除Maven项目:项目右键,Remove Module

    在这里插入图片描述

三、 依赖管理

1、 依赖配置

  1. 依赖:值当前项目运行所需要的jar包,一个项目中可以引入多个依赖
  2. 配置
  • 在 pom.xml 中编写<dependencies>标签
  • <dependencies> 标签中使用<dependency> 引入坐标
  • 定义坐标的 groupId,artifactId,version
  • 点击刷新按钮,引入最新加入的坐标
  1. 注意事项
  • 如果引入依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖(这个过程会比较耗时,耐心等待)
  • 如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索。

2、依赖传递

  1. 依赖具有传递性
  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖的资源如果依赖其他资源,当前项目简介依赖其他资源
  1. 排除依赖:排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
<exclusions><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></exclusion></exclusions>

3、依赖范围

  • 依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope></scope>设置其作用范围。
  • 作用范围
    • 主程序范围有效(main文件夹范围内)
    • 测试程序范围有效(test文件夹范围内)
    • 是否参与打包运行(package指令范围内)
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version><scope>test</scope></dependency>

在这里插入图片描述

4、生命周期

  1. Maven的生命周期就是为了对所有的Maven项目构建过程进行抽象和统一
  2. Maven中有三套,相互独立的生命周期:
  • clean:清理工作
  • default:核心工作,如:编译、测试、打包、安装、部署等
  • site:生成报告、发布站点等(不常用)
  1. 每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
    在这里插入图片描述
  2. 常见的生命周期阶段
  • clean:移除上一次构建生成的文件
  • compile:编译项目源代码
  • test:使用合适的单元测试框架运行测试(junit)
  • package:将编译后的文件打包,如jar、war等
  • install:安装项目到本地仓库
  1. 注意事项
  • 在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行
  1. 常用的几个阶段在maven面板中都有
    在这里插入图片描述
  2. 执行指定生命周期的两种方式
  • 在idea中,右侧maven工具栏,选中对应的生命周期,双击执行。
  • 在命令行中,通过命令执行(例如:mvn compile)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/630835.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万字总结!Docker简介及底层关键技术剖析

本文首发在个人博客上&#xff1a;万字总结&#xff01;Docker简介及底层关键技术剖析 Docker 简介 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#x…

钉钉直播回放怎么下载到本地

钉钉直播回放如何下载到本地,本文就给大家解密如何下载到本地 工具我已经给大家打包好了 钉钉直播回放下载软件链接&#xff1a;https://pan.baidu.com/s/1_4NZLfENDxswI2ANsQVvpw?pwd1234 提取码&#xff1a;1234 --来自百度网盘超级会员V10的分享 1.首先解压好我给大家…

后端-MySQL-week11 多表查询

tips: distinct————紧跟“select”之后&#xff0c;用于去重 多表查询 概述 一对多&#xff08;多对一&#xff09; 多对多 一对一 多表查询概述 分类 连接查询 内连接 外连接 自连接 必须起别名&#xff01; 联合查询-union&#xff0c;union all 子查询 概念 分类 …

docker部署SpringCloud微服务项目

我们写好的项目&#xff0c;都需要部署上线&#xff0c;今天就给大家介绍一下&#xff0c;如何将微服务项目部署上线&#xff0c;一般我们部署项目都是先在本地docker部署一遍&#xff0c;如果没有问题再部署到服务器&#xff0c;那么今天我就按照这个顺序来说 前置条件 微服…

数学建模--蒙特卡罗法MATLAB代码保姆式解析

1.简单介绍 2.思想的实际运用 我们利用蒙特卡罗法的思想求解圆周率π的值&#xff0c;这里求得的肯定是近似值&#xff0c;我们是通过大量的模拟实验&#xff0c;利用概率求解的&#xff0c;但是这个值和我们的精确值之间还是有一定的误差的&#xff1b; 我们的思想就是在半径为…

axios的封装理解和基本使用

axios的配置 ruoyi的前端对axios进行了封装&#xff0c;让我们发get请求或者是post请求更加方便了。 ruoyi对axios的封装在下面文件中&#xff1a;打开文件&#xff0c;可以看到它有三个显眼的方法&#xff0c;分别是request拦截器、response拦截器和通用下载方法。ruoYi接口地…

vivo怎么录屏?玩转手机新体验!(2024最新)

“最近新入手了一款vivo手机&#xff0c;感觉用起来真的很顺手&#xff0c;各种功能都很强大。昨天和朋友一起打游戏&#xff0c;突然想到要记录下精彩瞬间&#xff0c;但是找遍了手机&#xff0c;都没有找到录屏功能。我想请教一下各位vivo手机用户&#xff0c;你们通常在哪里…

Golang基础-13

Go语言基础 介绍 并发 channel goroutine 互斥锁 读写锁 原子操作 select 超时处理 sync包 runtime包 介绍 本文介绍Go语言中 channel、goroutine、互斥锁、读写锁、原子操作、select、超时处理、sync包、runtime包等相关知识。 并发 进程是是最小的资源管理单元…

机器视觉【1】-机械臂视觉

文章目录 Eye-to-HandEye-in-Hand基于Eye-in-Hand型机械臂单目视觉定位单目相机标定针孔相机模型畸变标定方法机械臂手眼标定手眼标定求解图像预处理图像灰度化与二值化图像滤波图像特征匹配机械臂单目视觉定位目标物体图像深度信息目标物体中心定位参考文献根据机械臂与相机所…

如何进行开关电源温升极限测试?

开关电源温升极限测试是指开关电源在没有过温保护的条件下&#xff0c;逐渐升高电源的测试温度&#xff0c;直到开关电源损坏。温升极限测试是为了研究开关电源能够承受的最高环境温度&#xff0c;从而评估开关电源的性能&#xff0c;优化提升开关电源的工艺设计。 温升极限测试…

美团财务科技后端一面:如何保证数据一致性?延时双删第二次失败如何解决?

更多大厂面试内容可见 -> http://11come.cn 美团财务科技后端一面&#xff1a;项目内容拷打 美团财务科技后端一面&#xff1a;项目相关面试题&#xff0c;主要包含 Zset、延时双删失败重试、热点数据解决、ThreadLocal 这几个方面相关的内容 由于前几个问题是对个人项目的…

Java在MySQL数据报错Data truncation: Data too long for column ‘**‘ at row 1 处理

问题 在Java SpringBoot MyBatis 框架的项目中&#xff0c;一切正常&#xff0c;不过在一个接口的参数字段传入过大的数据就会报此错误&#xff1a; 请求常:org.springframework.dao.DataIntegrityViolationException: Error updating database.Cause:com.mysql.cj.jdbc.excep…