论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Maven的顶级功能——依赖管理
Maven的顶级功能——依赖管理
梦应逍遥
金牌会员
|
2024-11-7 14:44:15
|
显示全部楼层
|
阅读模式
楼主
主题
703
|
帖子
703
|
积分
2109
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
依赖管理
依赖管理解决的问题
我们学完一个语言的语法之后,我们应该都能知道函数的引用或者类的创建等了。为了方便管理,我们就会把一些特定的功能实现写在一个代码文件中,我们只需要利用的时候导入就行了,这样无论是修改还是阅读都更加的方便简便,但这样会出来一个问题,一旦我们多个文件你引用我,我引用你,就会出现蜈蚣一样平常的嵌套(好比A引用B,B引用C),这样我们迁移或者打包的整个项目标时候就会很复杂,整个引用宛如迷宫一样平常,人工来管理就会很麻烦。这个时候Maven就能解决这个问题
Maven的作用
当我们声明白A的依赖的时候,Maven会自己判断这个模块和其他被引用的模块是否另有其他的依赖,假如有,就会主动导入其他的依赖,不用我们去判断是否有其他的依赖了。那我们怎么声明呢,就是在pom.xml这文件里面
pom.xml
pom.xml这个文件很有用,是项目标maven的配置文件,我们来仔细看看这个文件
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.itranswarp.learnjava</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.16</version>
</dependency>
</dependencies>
</project>
复制代码
我们来梳理一下整文件的结构:
我们可以分为几个大块
是 pom.xml 的根元素,包罗了所有项目标配置信息。
定义了命名空间和模式,确保文件遵循 Maven POM 规范。
<project ...>
所有项目的配置信息。
</project>
复制代码
整个项目自己的信息
<modelVersion>4.0.0</modelVersion>
<groupId>com.itranswarp.learnjava</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
复制代码
这些都是你管理项目标信息
一个Maven工程就是由groupId,artifactId和version作为唯一标识。
定义 POM 文件的模型版本,现在通常为 4.0.0。
表现项目标组 ID,通常是项目所属组织的反向域名(如 com.example)。
必须唯一,通常用来标识公司或组织。
项目标唯一标识符,表现模块或项目标名称(如 my-app)。
artifactId 应该在同一 groupId 下是唯一的。
定义项目标版本号(如 1.0.0)。
假如是开发版本,可以利用 -SNAPSHOT 标识(如 1.0.0-SNAPSHOT),表现不稳定版本。
指定项目标打包方式,默认为 jar。
其他常见值有 war(Web 应用)、pom(父项目)等。
这个标签里面是统一管理版本号、编码等配置。
project.build.sourceEncoding:表现项目源码的字符编码,通常应设定为UTF-8;
maven.compiler.release:表现利用的JDK版本,例如21;
maven.compiler.source:表现Java编译器读取的源码版本;
maven.compiler.target:表现Java编译器编译的Class版本。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
</properties>
复制代码
值得注意的是
从Java 9开始,推荐利用maven.compiler.release属性,保证编译时输入的源码和编译输出书本一致。假如源码和输出书本不同,则应该分别设置maven.compiler.source和maven.compiler.target。
通过定义的属性,就可以固定JDK版本,防止同一个项目标不同的开发者各自利用不同版本的JDK。
这里面就是整个项目所需的依赖
定义项目标依赖项,每个依赖项用 标签表现。
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.16</version>
</dependency>
</dependencies>
复制代码
关键字元素:
:依赖的组 ID。
:依赖的 artifact ID。
:依赖的版本号。
我们在引用其他第三方库的时候,只需要通过这3个变量确定。例如,依赖org.slfj4:slf4j-simple:2.0.16:这个依赖是我们可以直接在线下载下来直接调用的,分析下来就是
groupId为 org.slfj4
artifactId 为slf4j-simple
version 为 2.0.16
一样平常我们在表现Maven依赖时,利用简写形式groupId:artifactId:version
这个时候归去看pom.xml我们就发现整个结构已经非常清晰了,就是各种配置的结合体
xml
既然提到了,那我们就顺便先容一遍xml这个格式吧,通过上面的例子我们能看出xml是非常像html的语法的,但是xml有着很高的自由度,由于xml的本意就是靠着这样的层级信息去表达主题各式各样的信息
这样的表现优点就是非常的结构化,结构化对于整个计算机的信息表现无疑是非常契合和高效的
xml的表现既非常地公式化,利用来将这个盒子命名就行,里面随便输入信息就行,由于xml的功能就像文章一样,只是用来看的。也非常的灵活,每个都可以举行嵌套
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
梦应逍遥
金牌会员
这个人很懒什么都没写!
楼主热帖
SSH远程登录与控制
分布式机器学习在云盘算环境中的应用 ...
【嵌入式】嵌入式系统稳定性建立:linu ...
云计算稽核 - 分析电子银行需求采用微 ...
HarmonyOS应用开辟高级认证考试答案三- ...
如何将github copilot当gpt4用
iOS状态栏自界说神器——StatusMagic安 ...
防患于未然,智能监控新视角:EasyCVR ...
从零手写实现 nginx-25-directive map ...
Percona Toolkit 神器全攻略(复制类) ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
物联网
前端开发
分布式数据库
Mysql
移动端开发
快速回复
返回顶部
返回列表