首页 > 其他分享 >Maven 使用方法

Maven 使用方法

时间:2024-09-21 18:47:01浏览次数:8  
标签:maven 依赖 仓库 jar Maven 模块 使用 方法

Maven

Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),其表现于一个XML文件(pom.xml),其中包含了项目的基本学习,依赖关系,插件配置,构建路径等等

为什么使用Maven

  • 导入第三方jar包更便捷:之前我们在使用第三方框架时我们会把jar包复制粘贴到WEB-INF/lib包下.每次创建新工程时都要重复一般繁琐的步骤,当使用maven,其会将每个jar包在maven本地仓库中保存一份,需要jar包的工程只要以坐标的方式简单引用一下即可.大大节约空间,让项目更加轻巧

  • 连带依赖jar包:jar包往往不是独立的,许多jar包需要依赖于其他jar包才能进行工作.每当我们去引入一个新的jar包,我们并不知道这个jar包是否依赖于其他的jar包.若使用maven,可以自动将当前jar包所依赖的其他jar包全部注入进来,无需人工参与,节约了大量的人力精力

  • 获取规范的jar包:在开发过程中我们会使用很多jar包,每个jar包的获取方法不同,在网上早的jar包,或许是不规范的,是不可以使用的,而maven可以为我们提供一个完全统一规范的jar包管理体系

  • 将项目进行模块化管理:随着项目的扩大其不能简单的通过package结构来划分模块,因为会造成jar包的多次导入,非常不方便,这时候必须得将项目拆分为多个工程进行协同开发,这样每个jar包只需到maven仓库中导入即可

Maven的原理

Maven仓库

maven仓库是其原理的重要一部分,Maven中任何一个依赖,插件,或项目构建的的输出都可称之为构件

  • 两类仓库

    maven仓库分为本地仓库于远程仓库,寻找构件时,首先会在本地仓库中寻找,若没找到则跳转至远程仓库寻找;在原创仓库中找到之后就将其下载至本地仓库以便下次使用

  • 本地仓库:在下载完maven,若不配置本地仓库地址,则maven会将其默认配置到C盘.因此我们需要手动配置:打开maven文件→找到conf文件夹→打开setting,xml文件

在setting.xml文件中55行打上一个标签

 <localRepository>路径地址</localRepository>

这样本地仓库就配置好了

  • 远程仓库:

    • 远程仓库下又分为:中央仓库,私有仓库,镜像仓库
      • 中央仓库:是Maven社区维护的一个公共仓库,包含了大量的常用Java库和构件.Maven默认会从这里下载依赖,但毕竟是外网,国内下载较慢,不推荐,通常把中央仓库地址给注释掉
      • 镜像仓库:镜像仓库是为了加速依赖下载而设置的仓库,通常位于同意局域网内,可以作为中央仓库的镜像,下载速度较快,推荐的方法,通常使用阿里巴巴进行仓库
    • 在setting.xml文件中找到<mirrors>标签将其中的原始<mirror>标签注释掉将其换成阿里巴巴的镜像网站即可体验高速下载
      <!-- 阿里巴巴镜像Maven网址 -->
       <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    

在IDEA中配置Maven

  • 在IDEA工作去上方菜单找到File,下拉选择Setting

  • 在弹出对话框中,展开“Build,Execution,Deployment”,在 Build Tools 下选择 Maven,如下图

  • 在 Maven home path 中,指定本地 Maven 的位置

  • 勾选 User Settings file 后面的 Override,并指定本地仓库的 setting.xml 文件

  • 勾选 Local repository 后面的 Override,并指定本地仓库的地址

  • 打开新项目配置重复上面的操作

创建Maven项目

Maven的多级模块项目

在实际开发过程中,我们所接触的项目都是比较大型的,因此通过合理的模块拆分,可以实现代码的复用便于维护利用

创建maven_parent父级模块

父级模块的作用是统筹每个子模块的开发工作

  • 在IDEA中直接创建一个Maven项目

  • 接着什么都不用选

  • 将其中的src目录删除

创建maven_common

common模块用于封装那些在整个项目中多个模块都需要使用的公共代码和资源.common模块可以包含各种工具类,常量,配置文件,实体类等等

  • 在已经创建的父级maven右键选择New→选择module

  • 创建模块时选择maven→选择quickstart

  • 其余的项目文件都是类似的只是我们需要选择webapp模板

依赖管理

maven通过pom.xml文件管理项目中会用到的依赖

  • 使用了maven的多级模块时每个模块中会存在自己的pom.xml文件,称之为子模块
  • 子模块中的pom.xml文件通常会继承父模块的配置,也可以添加特定的模块依赖

依赖的注入

  • 依赖的基本结构
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
  • 坐标
    • groupld, artifactld, version :依赖的基本坐标, 对于任何一个依赖来说,基本坐标是最重要的,Maven是根据坐标才能找到需要的依赖
    • 使用这三个坐标就可以确定一个依赖
  • 关于maven依赖的坐标可以去阿里镜像网址查询https://developer.aliyun.com/mvn/search

标签:maven,依赖,仓库,jar,Maven,模块,使用,方法
From: https://www.cnblogs.com/ihave2carryon/p/18424370

相关文章

  • 使用vscode和markdown写博客
    Reason最近因为在做学校的实训项目,真正接触到了实际开发,遇到了不少的问题,由于之前也有在scdn上写博客的习惯(实际写的很乱,而且个人不是很喜欢csdn哈QAQ),所以想要重新维护一个规整的个人博客,于是此博客应允而出。Condition在了解之后,发现博客园的功能实在强大,而且大佬云集,也没有......
  • 【Java】了解线程 Thread 类的使用,
    线程是什么线程是操作系统中调度的基本单位,是比进程更小的执行单元。线程在进程内部运行,共享该进程的资源,如内存和文件句柄,但每个线程都有自己的执行栈和程序计数器。线程的主要特点包括:轻量级:线程相较于进程更加轻量,创建和销毁的开销较小。共享资源:同一进程中的线程共享该进程的内......
  • 混沌测试工具chaosblade 模拟磁盘 内存 CPU使用率
    一、简介ChaosBlade包含混沌工程实验工具chaosblade和混沌工程平台chaosblade-box。ChaosBlade的github项目地址,ChaosBlade主要包括以下几个组件:ChaosBlade-BoxConsole:ChaosBlade可视化组件,主要提供一套用户友好的Web界面,用户可以通过该界面进行混沌工程实验的编排与操作管......
  • 不在同一局域网怎么远程桌面?轻松管理多台电脑的实现方法(共4种)
    随着远程办公的普及和团队协作的深入,我们经常会遇到需要远程访问非同一局域网内电脑的情况。那么,不在同一局域网内还怎么远程桌面呢?本文将介绍四种方法,帮助你轻松实现这一需求!方法一:使用Windows远程桌面结合公网IP或反向代理Windows自带的远程桌面功能结合公网IP或反向代理......
  • Vue学习笔记6:分别使用纯JavaScript和Vue的v-if 指令来有条件地渲染网页元素
    0缘起有时我们的网页需要根据需要用户的选择展示不同的页面元素。例如:<p>你喜欢哪种水果?</p><p> <label> <inputtype="radio"value="苹果"name="fruit"/> 苹果 </label></p><p> <label> <inputtype="ra......
  • 使用`xlsx-js-style`插件导出表格,并添加样式导出
    安装npminstallxlsx-js-style--save使用引入importXLSXfrom'xlsx-js-style'//1.创建一个工作簿constwb=XLSX.utils.book_new()//表格标题//这里设置标题是怕数据没有,返回空表,连标题都没有//这里的权重,没有数据tableData里的高,果如ta......
  • 什么是 Web Worker 以及如何在 NextJS 中使用它
    先决条件reactjs/nextjs基础知识什么是网络工作者javascript是一种单线程语言,它使用的线程称为主线程浏览器实际上使用其他线程来自浏览器api的webworker是您使用javascript创建和注册附加线程的一种方式当您只能在主线程上工作时,为什么还要创建其他线程呢?假......
  • 【服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里
    文章目录一、阿里云OSS对象存储服务介绍二、服务开通与使用准备1、准备工作2、开通OSS云服务(新用户免费使用三个月)3、创建存储空间bucket4、创建并保存Accesskey5、配置访问凭证AK&SK(系统环境变量)三、阿里云OSS使用步骤1、导入依赖坐标2、文件上传Demo快速入门3、阿里......
  • HashMap源码分析:如何实现一次put方法
    前情提示:&为按位与运算,将两个数转为二进制,当他们对应位置都为1的时候,得到的结果为,其他情况下结果为0例如:0000000000001011--->110000000000001001--->90000000000001001--->9即11&9=9 本篇主要介绍hashMap的构造方法、put方法相关内容相关成员变量介绍......
  • 什么是 Vitest?为什么要使用它?
    嘿,开发者同事!?你准备好进入vitest的世界了吗?如果您是测试新手或者一直在使用其他测试框架,请不要担心。我们将一起探索vitest,在本文结束时,您会很高兴尝试一下!什么是维泰斯特?vitest就像你的代码的超级英雄。这是一个由vite提供支持的超快单元测试框架。但这对你来说意味......