JavaWeb合集03-Maven

news2024/10/18 13:01:49

三、Maven

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

作用:

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

在这里插入图片描述

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. 在命令行中,通过命令执行,直接进入项目的文件夹的命令行。

    mvn clean
    
    mvn compile
    
    mvn package
    
    mvn test
    

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

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

相关文章

map和set的模拟实现

一.内容介绍 1.set采用Key的搜索场景&#xff0c;map采用Key/Value的搜索场景&#xff0c;二者的底层均可以用红黑树实现&#xff0c;为了降低代码的冗余量可以通过对红黑树模板的参数做少许改动达到一棵红黑树的基层实现set和map两个派生类的目的。 一些问题&#xff1a; 1…

uniapp uni.uploadFile errMsg: “uploadFile:fail

uniapp 上传后一直显示加载中 1.检查前后端上传有无问题 2.检查失败信息 await uni.uploadFile({url,filePath,name,formData,header,timeout: 30000000, // 自定义上传超时时间fail: async function(err) {$util.hideAll()// 失败// err 返回 {errMsg: "uploadFile:fai…

【达梦数据库】组态王连接达梦数据库的操作步骤

目录 背景环境版本1、建立ODBC连接配置三级目录 背景 客户咨询组态王如何连接达梦数据库&#xff0c;在查找资料时发现目前网络上没有资料适配达梦数据库 环境版本 Window版本&#xff1a;win11 组态王软件&#xff1a;32位 达梦数据库&#xff1a;32位 1、建立ODBC连接配置…

创客项目秀|基于xiaoESP32C3的桌面嵌入式充电站

今天小编给大家带来的是来自B站的新人UP主“不做点东西就焦虑”的桌面充电站项目&#xff0c;该充电站支持有线和无线两种充电方式&#xff0c;为了尽可能多的为桌面的USB设备统一供电&#xff0c;有线充电接口达到13路&#xff0c;充电站的外观试用铝合金CNC加工&#xff0c;具…

HarmonyOS 开发知识总结

1. HarmonyOS 开发知识总结 1.1. resources->base->media中不可以新建文件夹&#xff1f; 项目图片路径resources->base->media中不可以新建文件夹&#xff0c;图片全平级放里面&#xff0c;查找图片不方便&#xff0c;有没有什么其他的办法解决这个难点&#xff…

软件测试学习笔记丨Pycharm运行与调试

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/23454 Pycharm作为集成开发环境&#xff0c;除了可以编写脚本&#xff0c;还可以运行和调试自己的代码&#xff0c;下面就为大家介绍一下pycharm运行和调试代码的功能如何使用。 代码运行 编…

银行卡风险画像在风险防控中的作用

现在&#xff0c;网络诈骗涉及到银行卡转账的案例不在少数&#xff0c;在这种背景下&#xff0c;如何有效识别、预防和控制银行卡风险&#xff0c;成为银行业及监管机构面临的问题之一。 银行卡风险画像&#xff0c;简而言之&#xff0c;是基于持卡人交易行为、个人信息、信用记…

高级算法设计与分析 学习笔记14 FFT

​ 本章我们研究多项式乘法。 我们直接乘&#xff0c;时间复杂度是n^2。使用FFT则可以变成nlgn ​编辑 可以看到两个n的多项式&#xff0c;我们直接乘&#xff0c;每种组合都要试一遍&#xff0c;就会要是n^2遍 ​编辑 那么要怎么加速呢&#xff1f; ​编辑 首先多项式可…

用户界面设计:视觉美学与交互逻辑的融合

1、什么是用户界面 用户界面&#xff08;UI&#xff09;是人与机器之间沟通的桥梁&#xff0c;同时也是用户体验&#xff08;UX&#xff09;的重要组成部分。用户界面设计包括两个核心要素&#xff1a;视觉设计&#xff08;即产品的外观和感觉&#xff09;和交互设计&#xff…

鸿蒙网络编程系列21-使用HttpRequest上传任意文件到服务端示例

1. 前述文件上传功能简介 在前述文章鸿蒙网络编程系列11-使用HttpRequest上传文件到服务端示例中&#xff0c;为简化起见&#xff0c;只描述了如何上传文本类型的文件到服务端&#xff0c;对文件的大小也有一定的限制&#xff0c;只能作为鸿蒙API演示使用&#xff0c;在实际开…

postgresql执行计划解读案例

简介 SQL优化中读懂执行计划尤其重要&#xff0c;以下举例说明在执行计划中常见的参数其所代表的含义。 创建测试数据 -- 创建测试表 drop table if exists customers ; drop table if exists orders ; drop table if exists order_items ; drop table if exists products ;…

加速功能安全AI 智能化:HIRAIN FuSa AI Agent发布

随着汽车电子电气&#xff08;E/E&#xff09;系统复杂性的增加&#xff0c;以及自动驾驶技术的迅猛发展&#xff0c;功能安全研发面临着日益严峻的挑战&#xff0c;研发成本也随之上升。面对这一挑战&#xff0c;经纬恒润凭借在功能安全领域的深厚积累&#xff0c;利用前沿的人…

页面局部使用vue等框架其它部分用JQuery进行交互

这个需求是原有django在网页需要定制一个人员签到信息。状态有三种&#xff0c;在岗&#xff0c;下班。好吧两种。但是你想 1&#xff0c;1.这是两次、共四个可能&#xff0c;00&#xff0c; 10&#xff0c;01&#xff0c;11.其中00是在家。10是在岗。01是。不签到只签退&#…

vue3使用element-plus手动更改url后is-active和菜单的focus颜色不同步问题

在实习&#xff0c;给了个需求做个新的ui界面&#xff0c;遇到了一个非常烦人的问题 如下&#xff0c;手动修改url时&#xff0c;is-active和focus颜色不同步 虽然可以直接让el-menu-item:focus为白色能解决这个问题&#xff0c;但是我就是想要有颜色哈哈哈&#xff0c;有些执…

一买一卖利润赛苹果,二手平台把阴阳检测玩明白了……

小柴最近看到这样一个案例&#xff0c;一网友在社交媒体上哭诉称&#xff0c;自己在某二手平台上看中了一支二手Apple pencil二代触控笔。 平台给出的检测报告显示&#xff0c;该产品是外观完好、功能完好接近全新的S等级产品&#xff0c;这位网友像捡到了宝一样&#xff0c;立…

不入耳开放式耳机哪个品牌好?这些品牌骨灰级开放式耳机推荐

开放式耳机以其独特的设计&#xff0c;不仅避免了长时间佩戴对耳朵造成的压迫感&#xff0c;还能让用户在享受音乐的同时保持对外界的感知&#xff0c;极大提升了使用安全性和舒适度。特别是对于那些长时间佩戴耳机的用户或是户外运动爱好者来说&#xff0c;开放式耳机无疑是一…

网页复制粘贴助手,Chrome网页复制插件(谷歌浏览器复制插件)

一款解决网页限制复制问题的插件&#xff0c;当你遇到限制复制粘贴和右键的网页是不是很头痛&#xff1f;安装这个插件后&#xff0c;点下插件按钮就能解决了 碰到这种情况 也是非常头疼 chrome拓展-chrome插件-强制复制 当我们浏览网页的时候&#xff0c;看到感兴趣的内容就…

Github 优质项目推荐(第七期)

文章目录 Github优质项目推荐 - 第七期一、【LangGPT】&#xff0c;5.7k stars - 让每个人都成为提示专家二、【awesome-selfhosted】&#xff0c;198k stars - 免费软件网络服务和 Web 应用程序列表三、【public-apis】&#xff0c;315k stars - 免费 API四、【JeecgBoot】&am…

校验台账生成网络事业调查表的方法

校验台账生成网络事业调查表的方法 一、打开教育事业统计调查表学校&#xff08;机构&#xff09;信息管理标准化台账“采集信息核查辅助工具二、导入本校台账并校验三、调查表统计导出四、完 一、打开教育事业统计调查表学校&#xff08;机构&#xff09;信息管理标准化台账“…

[已解决] pycharm添加本地conda虚拟环境 + 配置解释器 - pycharm找不到conda可执行文件

目录 问题&#xff1a; 方法&#xff1a; 补充&#xff1a;创建conda虚拟环境 参考文档&#xff1a;pycharm找不到conda可执行文件怎么办&#xff1f;-CSDN 问题&#xff1a; 1.显示&#xff1a;未为项目配置 Python 解释器 2.想在pycharm中使用本地创建的虚拟环境 方法&a…