day04-Maven

一、初识 Maven

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

官网:https://maven.apache.org/

Maven的作用

  1. 依赖管理(方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题)
  2. 统一项目结构(提供标准、统一的项目结构)
  3. 项目构建(标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式)

二、Maven 概述

1 Maven 介绍

Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(Project Object Model , 简称: POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

2 Maven 模型

  • 项目对象模型 (Project Object Model)
  • 依赖管理模型(Dependency)
  • 构建生命周期/阶段(Build lifecycle & phases)

(1)构建生命周期/阶段(Build lifecycle & phases)在这里插入图片描述
以上图中紫色框起来的部分,就是用来完成标准化构建流程 。当我们需要编译,Maven 提供了一个编译插件供我们使用;当我们需要打包,Maven 就提供了一个打包插件供我们使用等。

(2)项目对象模型 (Project Object Model)
在这里插入图片描述
以上图中紫色框起来的部分属于项目对象模型,就是将我们自己的项目抽象成一个对象模型,有自己专属的坐标。

(3)依赖管理模型(Dependency)
在这里插入图片描述
以上图中紫色框起来的部分属于依赖管理模型,是使用坐标来描述当前项目依赖哪些第三方 jar 包。

3 Maven 仓库

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

仓库的本质就是一个目录(文件夹),这个目录被用来存储开发中所有依赖(就是jar包)和插件

Maven仓库分为:

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

4 Maven 安装

下载地址:https://maven.apache.org/download.cgi

安装步骤:
(1)解压 apache-maven-3.6.1-bin.zip 。

(2)配置本地仓库:修改 conf/settings.xml 中的 <localRepository> 为一个指定目录。

<localRepository>E:\develop\apache-maven-3.6.1\mvn_repo</localRepository>

(3)配置阿里云私服:修改 conf/settings.xml 中的 <mirrors> 标签,为其添加如下子标签:

<mirror>  
<id>alimaven</id>  
<name>aliyun maven</name>  
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>          
</mirror>

(4)配置环境变量: MAVEN_HOME 为 maven 的解压目录,并将其 bin 目录加入 PATH 环境变量。

三、IDEA 集成 Maven

1 配置 Maven 环境

1.1 当前工程设置

选择 IDEA中 File => Settings => Build,Execution,Deployment => Build
Tools => Maven

  1. Maven home path :指定当前 Maven 的安装目录
  2. User settings file :指定当前 Maven 的 settings.xml 配置文件的存放路径
  3. Local repository :指定 Maven 的本地仓库的路径 (如果指定了settings.xml, 这个目录会自动读取出来, 可以不用手动指定)

1.2 全局设置

  1. 选择 IDEA中 File => close project
  2. 打开 All settings , 选择 Build,Execution,Deployment => Build Tools =>
    Maven

2 Maven 项目

2.1 创建 Maven 项目

(1)创建一个空项目
在这里插入图片描述

(2)创建模块,选择 Maven,点击 Next在这里插入图片描述
在这里插入图片描述

(3)填写模块名称,坐标信息,点击 finish,创建完成
在这里插入图片描述

Maven项目的目录结构:
maven-project01|--- src (源代码目录和测试代码目录)|--- main (源代码目录)|--- java (源代码java文件目录)|--- resources (源代码配置文件目录)|--- test (测试代码目录)|--- java (测试代码java目录)|--- resources (测试代码配置文件目录)|--- target (编译、打包生成文件存放目录)

2.2 POM 配置详解

POM (Project Object Model) :指的是项目对象模型,用来描述当前的 maven 项目。

  • 使用 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="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- POM模型版本 --><modelVersion>4.0.0</modelVersion><!-- 当前项目坐标 --><groupId>com.itheima</groupId><artifactId>maven_project1</artifactId><version>1.0-SNAPSHOT</version><!-- 打包方式 --><packaging>jar</packaging></project>

2.3 Maven 坐标详解

什么是坐标?

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

Maven 坐标主要组成

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

3 导入Maven项目

3.1 方式1:使用 Maven 面板,快速导入项目

打开 IDEA,选择右侧 Maven 面板,点击 + 号,选中对应项目的 pom.xml 文件,双击即可。
在这里插入图片描述

3.1 方式2:使用 idea 导入模块项目

方式二:打开 IDEA,选择右侧 Maven 面板,点击 + 号,选中对应项目的 pom.xml 文件,双击即可。
在这里插入图片描述

四、依赖管理

1 依赖配置

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

配置:

  1. 在 pom.xml 中编写 <dependencies> 标签
  2. 在 <dependencies> 标签中 使用 <dependency> 引入坐标
  3. 定义坐标的 groupId,artifactId,version
  4. 点击刷新按钮,引入最新加入的坐标

注意事项:

  1. 如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程会比较耗时,耐心等待)
  2. 如果不知道依赖的坐标信息,可以到 https://mvnrepository.com/ 中搜索。

2 依赖传递

2.1 依赖具有传递性

直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
在这里插入图片描述

2.2 排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。

	<dependency><groupId>com.itheima</groupId><artifactId>maven-projectB</artifactId><version>1.0-SNAPSHOT</version><!--排除依赖, 主动断开依赖的资源--><exclusions><exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion></exclusions></dependency>

3 依赖范围

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

作用范围:

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

在这里插入图片描述

4 生命周期

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

Maven 中有 3 套 相互独立 的生命周期:
clean:清理工作。
default:核心工作,如:编译、测试、打包、安装、部署等。
site:生成报告、发布站点等。

每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
在这里插入图片描述

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

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

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

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

想开发苹果群控软件?先了解这些代码!

随着智能设备的普及&#xff0c;群控软件的需求日益增加&#xff0c;特别是针对苹果设备的群控软件&#xff0c;因其出色的性能和广泛的用户基础&#xff0c;受到了开发者们的青睐。 然而&#xff0c;开发一款功能强大的苹果群控软件并非易事&#xff0c;需要深入了解苹果的开…

获取C语言语句对应的汇编码和机器指令

借助IDE的调试功能 以CodeBlocks为例&#xff0c;先设置断点&#xff0c;然后点击红色三角形调试。 然后选择Debug➡ Debugging Windows➡Disassembly 就可以看到了 使用命令行 在工程文件中&#xff0c;一般可以找到一个.o文件。如果没有&#xff0c;可以先在program.c的目录下…

掌握java中继承

目录 1.概念&#xff1a; 2.使用&#xff1a; 3.super关键字 4.子类构造方法 5.super和this关键字 6.初始化时代码块的执行顺序 7.继承的方式 8.final关键字 1.概念&#xff1a; 是面向对象程序设计代码可以重复使用的重要手段&#xff0c;允许程序员在保持原有类特性的…

git入门到精通

第3章 Git常用命令 3.1 设置用户签名 3.2 初始化本地库 3.3 查看本地 状态 3.3.1 首次查看&#xff08;工作区没有任何文件&#xff09; 3.3.2 新增文件&#xff08;hello.txt&#xff09; 3.3.3 再次查者&#xff08;检測到末追踪的文件&#xff09; 3.4添加暫存区 3…

java常用排序算法——冒泡排序,选择排序概述

前言&#xff1a; 开始接触算法了&#xff0c;记录下心得。打好基础&#xff0c;daydayup! 算法 算法是指解决某个实际问题的过程和方法 排序算法 排序算法指给混乱数组排序的算法。常见的有&#xff1a;冒泡排序&#xff0c;选择排序 冒泡排序&#xff1a; 冒泡排序指在数组…

python界面开发 - Label 提示框

文章目录 1. Label 提示框1.1. 显示文本1.2. 修改Label的文本1.2.1. 方式1&#xff1a;通过label.config()1.2.2. 方式2&#xff1a;通过 label["text"] 属性进行修改 1.3. 设置背景图片 2. Tkinter 开发3. python图形界面开发3.1. Python图形界面开发——Tkinter3.2…

简单认识Linux

今天带大家简单认识一下Linux&#xff0c;它和我们日常用的Windows有什么不同呢&#xff1f; Linux介绍 Linux内核&发行版 Linux内核版本 内核(kernel)是系统的心脏&#xff0c;是运行程序和管理像磁盘和打印机等硬件设备的核心程序&#xff0c;它提供了一个在裸设备与…

基于java+springboot+vue实现的宠物健康咨询系统(文末源码+Lw)23-206

摘 要 本宠物健康咨询系统分为管理员还有用户两个权限&#xff0c;管理员可以管理用户的基本信息内容&#xff0c;可以管理公告信息以及宠物健康知识信息&#xff0c;能够与用户进行相互交流等操作&#xff0c;用户可以查看宠物健康知识信息&#xff0c;可以查看公告以及查看…

说说flexbox(弹性盒布局模型)及适用场景?

文章目录 一、是什么二、属性flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-contentorderflex-growflex-basisflexalign-self 三、应用场景参考文献 一、是什么 Flexible Box 简称 flex&#xff0c;意为”弹性布局”&#xff0c;可以简便、完整、响应式地…

【Bugs】java: 错误: 不支持发行版本 xx

文章目录 报错场景&#xff1a;报错原因&#xff1a;解决方法&#xff1a; 报错场景&#xff1a; IDEA运行Java项目报错&#xff0c;点击运行之后&#xff0c;IDEA在编译代码的时候就出现报错&#xff1a; 报错类型一&#xff1a;java: 错误: 不支持发行版本 21报错类型二&am…

python72-Python的函数入门,为函数提供文档

之前介绍过可以使用Python内置的help()函数查看其他函数的帮助文档,我们也经常通过help()函数查看指定函数的帮助信息&#xff0c;这对于Python开发者来说非常重要。 我们还可以为函数编写说明文档一只要把一段字符串放在函数声明之后、函数体之前&#xff0c;这段字符串将被作…

SAP金江、阎韶华、雷凡将出席“第四届ISIG-RPA、低代码、流程挖掘三大峰会

3月16日&#xff0c;第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导&#xff0c;企智未来科技&#xff08;RPA中国、AIGC开放社区、LowCode低码时代&#xff09;主办。大会旨在聚合每一位产业成员的力量&#xff0c;深入探索R…

【C语言】InfiniBand驱动mlx4_init和mlx4_cleanup

一、中文注释 Linux内核模块的初始化和清理过程&#xff0c;针对一个称为mlx4的网络设备驱动。以下是代码的逐行中文注释&#xff1a; static int __init mlx4_init(void) {int ret;if (mlx4_verify_params())return -EINVAL; // 检查设备参数是否有效&#xff0c;无效则返回…

如何做好【沟通】管理

目录 管理的定义 管理的四大职能&#xff1a; 四共团队&#xff1a; 领导力&#xff1a; 沟通的四种类型听、说、读、写&#xff08;计划、报告&#xff09; 沟通四原则 思维框架&#xff1a;结构树报告 管理的定义 彼得.德鲁克&#xff1a;管理通过他人去完成任务的学…

【Neo4j系列】Neo4j之CQL语句和函数介绍

本文将对Neo4j中的CQL语句和CQL函数进行详细介绍。 作者&#xff1a;后端小肥肠 目录 1. 前言 2. CQL语句 2.1. CQL简介 2.2. CREATE命令 2.3. MATCH命令 2.4. RETURN命令 2.5. MATCH和RETURN 2.6. CREATEMATCHRETURN命令 2.7. 关系基础 2.8. CREATE创建标签 2.9. WH…

面试高频 牛群的位置排序---搜索插入位置

题目描述 农场里有一群牛&#xff0c;每头牛都有一个标签值&#xff0c;这些标签值组成一个升序排列的数组 labels。现在农场主想知道&#xff0c;给定一个目标标签值 target&#xff0c;如果在牛群中存在这个标签&#xff0c;返回它的位置&#xff0c;如果不存在&#xff0c;…

vscode 配置opengl (glut), lib链接可参考

这里假定你已经配置好基础的vscode c环境 json介绍 这里其实主要配置的3种json, vscode其实就是通过launch.json和tasks.json来自动生成指令的 launch.json 这个用于启动程序用的&#xff0c;但是由于其可以指定preLaunchTask-即在启动之前需要做什么事情&#xff0c;所以这…

白嫖阿里云DSW做AI绘画的几点技巧(老鸟参考,新手免入)

白嫖方法就不说了&#xff0c;选择A10显卡或者V100显卡&#xff0c;能画些图&#xff0c;还能用三个月。可以感受一下顶级显卡的速度&#xff0c;当生产力工具肯定是不行的&#xff0c;毕竟5000个使用量用起来很快的。 问题一&#xff1a; 镜像版本选择-官方提供二个镜像&…

Unity笔记:C#基础(1)

杂项 虚函数 CSDN - C虚函数详解 cnblog - C#中的虚函数virtual 常量池与new 在C#中&#xff0c;string是不可变的&#xff0c;这意味着对string对象的操作通常会返回一个新的string对象&#xff0c;而不会修改原始的string对象。因此&#xff0c;几乎所有涉及更改string内…

鞋服品牌怎样合理把控订货深度和宽度

在鞋服品牌的运营管理中&#xff0c;订货深度和宽度是两个至关重要的概念。订货深度指的是某一款式或规格的产品数量&#xff0c;而订货宽度则代表品牌所涵盖的产品种类和款式。合理把控订货深度和宽度对于品牌的库存管理、销售情况以及顾客满意度都有着深远的影响。本文将探讨…