第十篇:复习maven

文章目录

  • 一、什么是Maven
    • 1. 依赖管理
    • 2. 统一项目结构
    • 3. 项目构建
    • 4. 依赖的仓库
  • 二、IDEA集成Maven
    • 1. Maven简单的安装和配置
    • 2. 配置Maven环境
    • 3. 创建Maven项目
    • 4. Maven坐标
    • 4. 导入Maven项目
  • 三、依赖管理
    • 1. 依赖配置
    • 2. 依赖传递
    • 3. 依赖范围
    • 4. 生命周期
  • 四、小结

一、什么是Maven

Maven 是 apache旗下的一个开源项目,是一款用于管理和构建java项目的工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。

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

  1. 依赖管理:方便快捷的管理项目以来的资源(jar包),避免版本冲突问题
  2. 统一项目结构:提供标准,统一的项目结构
  3. 项目构建:标准跨平台的(Linux,Windows,MacOS)的自动化项目构建方式
    在这里插入图片描述

1. 依赖管理

1.依赖管理-只需要创建一个Maven文件,然后在pom.xml中引入对应所需的jar包和对应的版本号即可,Maven会自动联网下载
在这里插入图片描述

2. 统一项目结构

2.统一项目结构-这些开发工具所构建出来的Java目录都是有差异的,所以可能在eclipse中的工程不能够很好的引入到idea中,如果使用了Maven就会完美的解决,因为maven统一了结构目录,不管使用哪一种开发工具,只要使用了Maven构建项目,在其他的工具中,就可以将这个Maven工程直接导入进来。

在这里插入图片描述

  • main:实际项目资源
    • Java:源代码目录
    • resources:配置文件目录
  • test:测试项目资源
  • pom.xml:项目配置文件

3. 项目构建

3.项目构建-有一套标准的构建流程,可以基于提供的一些Maven指令,来快速的进行编译,测试,打包,发布等一系列操作:
在这里插入图片描述
只需要在idea中右侧Maven中
在这里插入图片描述
点击所需要的,就会自动进行操作

4. 依赖的仓库

在maven中依赖中,想手动查看是否存在这个依赖,在文件夹中(以下为例),maven文件夹下的compiler文件夹下的plugin对应的版本就是3.8.0:

在这里插入图片描述

这个jar包储存的位置就是Maven仓库。

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

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

下载顺序:如果没有远程仓库,顺序则是(1–>2)
如果有远程仓库,顺序则是(1–>3–>2–>3–1)

  1. 当我们需要添加一个jar包,首先会在本地仓库中查找,如果本地仓库有,直接关联本地仓库的jar包即可

  2. 如果本地仓库没有,接下来就会连接中央仓库吧需要的jar包下载下来。但是,我们本地仓库连接中央仓库是需要连接国外的网站的,所以速度会比较慢,为了提升下载速度,可以引入第三种远程仓库

  3. 远程仓库一般由公司团队自己搭建的一个私有层,如果本地仓库中没有的话,就会查找远程仓库,如果远程仓库也没有的话,就会让远程仓库进行对接中央仓库进行下载,然后再下载到本地仓库

Maven构建项目生命周期中的各个阶段,通过不同的插件,可以完成对应的各种内容,
在这里插入图片描述

二、IDEA集成Maven

1. Maven简单的安装和配置

  1. 解压apache-maven-3.9.4-bin.zip
  2. 配置本地仓库,修改conf/settings.xml中的<localRepository>为一个指定目录。
    在这里插入图片描述
  3. 配置阿里云私服:修改conf/settings.xml中的<mirrors>标签,为其添加以下:
    在这里插入图片描述
  4. 配置环境变量:MAVEN_HOME为Maven的解压目录,并将其bin目录加入PATH环境变量
    打开电脑属性——高级系统设置——环境变量
    界面如下:
    在这里插入图片描述
    然后新建一个,变量名为 MAVEN_HOME,变量值为存放路径,具体如下:
    在这里插入图片描述
    然后在PATH环境中,把bin目录加入到环境变量中,新建效果如下:
    在这里插入图片描述
    可以在命令行中测试一下,使用mvn -v来测试查看,具体如下:
    在这里插入图片描述
    配置完成。

2. 配置Maven环境

配置Maven环境(当前工程)

  • 选择IDEA中File——Settings——Build,Execution,Deployment——Build Tools——Maven
  • 设置IDEA使用本地安装的Maven,并修改配置文件及本地仓库路径
    具体如下:
    在这里插入图片描述
    在这里插入图片描述
    然后检查一下Maven关联的JRE是不是17版本
    在这里插入图片描述
    在这里插入图片描述
    IDEA到此就配置完成

3. 创建Maven项目

  1. 创建模块,选择Maven,点击Next
  2. 填写模块名,坐标信息,点击finish,创建完成
  3. 编写HelloWord,并运行

具体如下:

在这里插入图片描述
在这里插入图片描述
创建即可,然后在pom.xml文件中就配置了当前工程的基本信息,进行一个简单的输出

例如:

sh
输出结果如下:

在这里插入图片描述

4. Maven坐标

Maven的坐标,什么是坐标?

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

Maven坐标主要组成:

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如com.itzhangxiao)
  • artifactId:定义当前Maven项目名称(通常是模块名称,是我们自己定义的,例如order-service)
  • version:定义当前版本号

例如:

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

4. 导入Maven项目

方法一:打开IDEA,选择右侧Maven面板,点击“+”号,选中对应项目的pom.xml文件,双击即可:

在这里插入图片描述
在这里插入图片描述
如果右侧没有Maven面板,可以用下面方法把它勾选出来。
在这里插入图片描述
方法二:File——Project Structure——Import Moudules——然后选择要导入文件所对应的pom.xml文件即可:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、依赖管理

1. 依赖配置

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

配置:

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

具体效果如下:

在这里插入图片描述

2. 依赖传递

依赖具有传递性:

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

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

如果A项目只想依赖B项目,不需要B项目依赖的资源,那么就需要Maven中的排除依赖

排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本,使用<exclusion>标签,A依赖B,B中的jar包会默认也传给A,A不想要!
在这里插入图片描述
例子如下:
在这里插入图片描述

3. 依赖范围

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

  • 主程序范围有效。(main文件夹范围内)
  • 测试程序范围有效。(test文件夹范围内)
  • 是否参与打包运行。(package指令范围内)
scope主程序测试程序打包(运行)范例
complie(默认)YYYlog4j
testYjunit
providedYYservlet-api
runtimeYYjdbc驱动

例子如下:
在这里插入图片描述

4. 生命周期

Maven的生命周期就是为了所有的Maven项目构建过程进行抽象和统一,项目构建的阶段,例如,清理,编译,打包,部署等,

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

  • clean:清理工作(清理上一次项目构建所产生的一些文件。)
  • default:核心工作:如编译,测试,打包,安装,部署等
  • site:生成报告,发布站点等。

在这里插入图片描述

这三个阶段中,又被详细的划分了,其中五点是最为重要的:
在这里插入图片描述

在这里插入图片描述
如何运行指定的生命周期:

  • 在idea中,右侧的Maven工具栏,选中对应的生命周期,双击执行
  • 在命令行中,通过命令执行。(mvn clean,mvn compile,mvn package…)
    在这里插入图片描述

在同一个生命周期中,按照先后顺序,先运行前面的的阶段,在运行后面的,后面的阶段需要依赖于前面的阶段。注意:在同一套生命周期中,当运行后面的阶段是,前面的阶段都会运行。

四、小结

写本文主要是为了分享我的学习过程,也是给自己记个笔记,哪里忘记了,回来再看一眼,也可以很快的回想起来

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SAP MM学习笔记 - 错误 BMG140 - The material number is longer than the length set

错误 BMG140 - The material number is longer than the length set 品目编号大于长度设置 1&#xff0c;在新规品目的时候&#xff0c;出的错 2&#xff0c;OMSL 品目Code书式变更 IMG path>Logistic general>Material Master>Basic settings>Define output for…

【Web前端入门学习】—CSS

目录 CSS简介CSS语法CSS三种导入方式CSS选择器元素选择器&#xff08;标签选择器&#xff09;类选择器ID选择器通用选择器子元素选择器后代选择器&#xff08;包含选择器&#xff09;并集选择器&#xff08;兄弟选择器&#xff09;伪类选择器伪元素选择器 CSS常用属性盒子模型网…

TabLayout预览不了?

<TableLayoutandroid:layout_width"wrap_content"android:layout_height"wrap_content"/> 当然预览不了了&#xff0c;这其实不是我要的控件。 而实际需要的是TabLayout 不是TableLayout &#xff01;&#xff01;&#xff01; <com.google.an…

机器学习——感知机模型

机器学习系列文章 入门必读&#xff1a;机器学习介绍 文章目录 机器学习系列文章前言1. 感知机1.1 感知机定义1.2 感知机学习策略 2. 代码实现2.1 构建数据2.2 编写函数2.3 迭代 3. 总结 前言 大家好&#xff0c;大家好✨&#xff0c;这里是bio&#x1f996;。这次为大家带来…

lvs+keepalive

虚拟路由冗余协议(Virtual Router Redundancy Protocol&#xff0c;简称VRRP) VRRP能够在不改变组网的情况下&#xff0c;将多台路由器虚拟成一个虚拟路由器&#xff0c;通过配置虚拟路由器的IP地址为默认网关&#xff0c;实现网关的备份。 协议版本: VRRPv2&#xff08;常用&…

日常生活小技巧 -- USR-TCP232-M4(读取IP)

下载&#xff1a;[Configuration Software]USR-TCP232-M4_V2.3.4.106

Vue2+3

vue相关介绍 Vue的两种使用方式&#xff1a; 1、vue核心包开发 场景&#xff1a;局部模块改造 2、vue核心包&vue插件工程化开发 场景&#xff1a;整站开发 概念&#xff1a;vue是用于构建用户界面的渐进式框架 创建vue实例 创建Vue实例&#xff0c;初始化渲染步骤&am…

Unity类银河恶魔城学习记录8-4 P80 Blackhole ability state源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic…

Windows系统获取硬盘读写速度(固态、机械通用)

管理员身份运行cmd&#xff0c;注意不要用powershell&#xff0c;可能会闪退 运行命令 winsat disk -drive C 获得C盘的读写速度 同理 winsat disk -drive D 可获得D盘的读写性能

【产品文档分类及撰写路径】

一、产品文档的分类 产品文档根据所处阶段和面相对象的差异大致可以分为三类&#xff1a; 商业需求文档 (BRD)&#xff1a;商业需求文档是面向公司高层和项目组&#xff0c;目的是为了获得资金、资源支持。市场需求文档 (MRD)&#xff1a;市场需求文档是面向运营和市场销售人员…

Python读取.csv/.txt文件并画图

文章目录 读取.txt文件并画出每列数据读取.csv文件并画出每列数据python绘图的基本知识补充 读取.txt文件并画出每列数据 main.ipynb //注意文件类型为.ipynbimport matplotlib.pyplot as plt import numpy as npdata np.loadtxt(result.txt) fig plt.figure(dpi100,figsize…

哪个牌子宠物空气净化器好?质量好的宠物空气净化器推荐

即使我们很爱自家的宠物&#xff0c;但我们也无法否认处理房间里飘荡的宠物毛发和皮屑&#xff0c;以及那些令人不快的气味&#xff08;比如地毯上的意外和垃圾桶里的气味&#xff09;的挑战。对于过敏患者来说&#xff0c;这几乎是无法忍受的。寻找有效的方法来减少这些问题对…

四个有用的Android开发技巧

一. 通过堆栈快速定位系统版本 这个地方主要分享大家两个个技巧&#xff0c;通过问题堆栈简快速定位当前系统版本&#xff1a; 1. 快速区分当前系统版本是Android10以下&#xff0c;还是Android10及以上&#xff1b; 首先Android10及以上引入了一个新的服务Service&#xff…

程序异常结束退出 无输出 无显式报错日志 爆栈

需求 开一个很大的数组&#xff08;300万&#xff09; ❗ 错误示例 #include <stdio.h>int main() {int size 3000000;int a[size];a[size-1] 999;printf("%d",a[size-1]);return 0; }&#x1f60b; 解决方案 局部变量存储在栈空间 &#xff08;较小&…

【数据结构】哈希

在一个数据序列中查找某一个数据元素&#xff0c;是数据管理时经常涉及的&#xff0c;通常以比较的方式来完成&#xff0c;典型的案例有无序序列的暴力查找&#xff08;O(N)&#xff09;、有序序列的二分查找&#xff08;O(logN)&#xff09;、平衡搜索树&#xff08;O(logN)&a…

CentOS网络故障排查秘笈:实战指南

前言 作为一名热爱折腾 Linux 的技术达人&#xff0c;我深知网络故障会让人抓狂&#xff01;在这篇文章里&#xff0c;我和你分享了我的心得体会&#xff0c;从如何分析问题、识别瓶颈&#xff0c;到利用各种神器解决网络难题。不管你是新手小白还是老鸟大神&#xff0c;这里都…

Get了!原来朋友圈定时发布如此简单!

你是不是也有这样的烦恼&#xff1f;微信号太多&#xff0c;有时候会顾不上发朋友圈&#xff1f; 别担心&#xff01;微信管理系统来帮你解决这个问题&#xff0c;实现朋友圈定时发布&#xff01;让我们一起来看看如何利用微信管理系统的强大功能来提升我们的社交媒体效率吧。…

Material Studio 中 DMol3 计算材料吸附能

1.先导入Cif文件 2.切表面 3.沿着你要切的晶面切 4.扩胞 5.加真空层&#xff08;一般加10埃&#xff09; 现在就是这样的了 6.然后对其结构优化&#xff08;高斯几何优化&#xff09; 7.再在体系上加原子或者想要的材料 8.Outmal文件中最后的Ef就是整个体系的能量&#xff0…

WPF中如何设置自定义控件(四)

在上一节讲到过将自定义界面进行左右分割,左边作为登录的用户信息和菜单&#xff1b;右边作为详情展示界面。 这节准备在上一节的基础上对左侧部分进行细分&#xff0c;完善功能&#xff0c;左侧的内容准备做两部分填充&#xff1a;一是登录用户的信息&#xff0c;一是菜单。因…

牛客网 华为机试 坐标移动

本题是需要将输入的字符串&#xff0c;得到移动位置的信息&#xff0c;同时要判断移动信息的合法性。 所以我们可以考虑先通过正则表达式过滤得到正确的字符串。 正确的字符串应该以ADWS其中一个字母开头&#xff0c;然后后面接着1个或者2个&#xff08;0-9&#xff09;的数字。…