Maven 使用方法

news/2024/12/26 11:24:39/文章来源:https://www.cnblogs.com/ihave2carryon/p/18424370

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

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

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

相关文章

CIDR与ICMP

CIDR CIDP:无类域间路由/超网 将多个小的子网,用一个相对更大的地址范围进行概括,以此实现表项的优化 如何求cidr后的ip 1.将子网转换成2进制: 0000 1010.0000 0001.0000 0000.0000 0000——10.1.0.0 0000 1010.0000 0001.0000 0001.0000 0000——10.1.1.0 0000 1010.0000 …

lightgbm的输出到低是怎么来的

结论:假设有100棵树,总输出就是100棵树每个输入所对应的输出叶子结点之和1 可以打印出每个样本在每棵树上所属的叶子结点id2 可以打印每棵树每个叶子结点的输出 3 找到每棵树对应叶子结点,加起来 4 查看该样本的模型输出,发现是一致的 5 可以画图每棵树的结构图,方便理解

使用vscode和markdown写博客

博客创建事要Reason 最近因为在做学校的实训项目,真正接触到了实际开发,遇到了不少的问题,由于之前也有在scdn上写博客的习惯(实际写的很乱,而且个人不是很喜欢csdn哈QAQ),所以想要重新维护一个规整的个人博客,于是此博客应允而出。Condition 在了解之后,发现博客园的…

CSP-S 2024

CSP-S 2024 游记初赛 感觉没啥好写的,毕竟弱省不是保龄都能过吗? Day -1 周五,一天有 \(\frac{10}{13}\) 都是奥赛,遂打模拟赛。 传送门。 题都不是不可做题,改得挺快,觉得明天初赛了就看了看初赛题,但没啥动力,半颓状态过了一晚。 晚上做了个诡异的梦。梦里又做了个梦…

适用于 VitePress 的公告插件开发实记

开发了一个适用于 VitePress 站点的公告插件 vitepress-plugin-announcement前言 笔者维护的 VitePress 博客主题在近1年多的时间里集成了非常多功能,不少用户希望将里面的部分功能分离出来,方便在其它 VitePress 站点也可以独立使用。 其中分离的第一个组件类型的就是呼声较…

4 个

8 9 5 6 6 8 1 6

2024 CSP-S 游记

遗失星海超神摘要等放了假再补8.22 下午 \(huge\) 说要报名 \(CSP\) 的事情,把全网开了,光速上 \(w3\) 扒下照片然后又光速上 \(163\) 邮箱拿验证码然后就注册账号了,过了一会儿就看见教练给报好了 \(CSP-S\) 。拿 \(QQ\) 邮箱的需要验证码所以 \(huge\) 把手机发了下来,还…

基于 Qwen2.5-Coder 模型和 CrewAI 多智能体框架,实现智能编程系统的实战教程

Qwen2.5 开源的系列模型中,Qwen2.5-Coder 模型的推理能力技压群雄,本文集合 CrewAI 框架,让多智能体自己编写符合我们需求的程序……9 月 19 日,阿里开源了 Qwen2.5 系列大模型全家桶:除常规的语言模型 Qwen2.5 之外,还发布了专门针对编程的Qwen2.5-Coder模型和数学的 Qw…

CSP-S 初赛游记

乱游OI 生涯的最后一个赛季了,尽量记录一下吧。 前两天得知衡水今年没什么人参加,只有本部一个考,也省的到处跑了。 考前一天得知就在机房楼考,这下子成原生土著了,布局比教室都熟。晚上布置了考场。 考前上午体活,打了会羽毛球后回宿舍吃泡面,为啥热水水流这么大,应该…

docker阶段03 docker容器内hosts文件, DNS, 查docker空间占用, 部署自动化运维平台spug, 查看docker run启动参数命令

容器内部的hosts文件 容器会自动将容器的ID加入自已的/etc/hosts文件中,并解析成容器的IP 范例: 修改容器的 hosts文件[root@ubuntu1804 ~]#docker run -it --rm --add-host www.wangxiaochun.com:6.6.6.6 --add-host www.wang.org:8.8.8.8 busybox / # cat /etc/hosts 127.…

视频号直播自动循环发评论-自动回复评论 - 浏览器插件

功能介绍 浏览器插件源码开放,可以随意二次开发,无时间限制,无账号限制,无电脑限制 实现原理,纯浏览器插件实现,监控浏览器界面元素变动,获取直播间或者直播中控后台的评论文本,匹配回复关键词或调用AI接口,再利用js模拟输入和点击等操作 支持以下中控台或直播间地址,…