【SpringCloud】pom.xml文件解析

2023-11-18

本文档为本人学习交流所用,参考原文档:https://www.cnblogs.com/hoyong/articles/13034270.html

1.pom.xml是什么?

pom是Project Object Model(项目对象模型)的缩写,是Maven中的项目文件,可用于管理与配置依赖,组织信息,项目授权,远程仓库等等.一个Maven项目,可以没有任何代码,但不能没有pom.xml。

2.基本配置标签

(1) project

project是pom.xml的根元素,包含了一些约束信息。

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 </project>

(2)modelVersion

pom的版本,这是Maven 2&3唯一支持的pom版本,而且不能忽略。

<modelVersion>4.0.0</modelVersion>

(3)Maven坐标

3.1 groupId

<groupId>表示项目所属的组,通常是一个公司或者组织的名称     <groupId>com.sunshinelife</groupId>

3.2 artifactId

<artifactId>表示项目的唯一标识.    < artifactId>项目名</artifactId>

3.3 version

<version>表示项目的版本号,通常来说项目的版本号分成三段:
主版本号.次版本号.修订版本号

主版本号:代表架构变动或者不兼容的实现.
次版本号:兼容性修改,功能增强.
修订版本号:bug修复.
版本号的后缀意味着项目的不同阶段:

SNAPSHOT:开发中的版本
RELEASE:正式发布版
M1,M2:M指里程碑,表示即将发布
RC:Release Candidate,发布候选
GA:General Availablity,基本可用版本

在这里插入图片描述

(4)properties

配置各种jar包的版本列表

 <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
       <!-- cloud升级修改-->
        <spring-boot.version>2.7.3</spring-boot.version>
        <spring-cloud.version>2021.0.3</spring-cloud.version>
        <alibaba-cloud.version>2.2.6.RELEASE</alibaba-cloud.version>
        <mybatis.version>2.2.0</mybatis.version>
        <pagehelper.version>1.2.3</pagehelper.version>
        <springsession.version>1.2.0.RELEASE</springsession.version>
        <ali-druid.version>1.1.10</ali-druid.version>
        <spring-boot.mvnfplugin.version>2.7.3</spring-boot.mvnfplugin.version>
        <commons-lang3.version>3.12.0</commons-lang3.version>
        <simplecaptcha.version>1.2.2</simplecaptcha.version>
        <commons-text.version>1.10.0</commons-text.version>
        <nacos-clint>1.4.1</nacos-clint>
        <!--cloud-util使用版本号-->
        <axis.version>1.4</axis.version>
        <commins-io.version>2.11.0</commins-io.version>
        <axis2.version>1.7.8</axis2.version>
        <xstrem.version>1.4.18</xstrem.version>
        <polx.version>5.2.2</polx.version>
        <fastjson.version>1.2.83</fastjson.version>
        <javacsv.version>2.0</javacsv.version>
        <tomcat.version>9.0.48</tomcat.version>
        <alibabaDruid.version>1.2.1</alibabaDruid.version>
        <commons-net.version>3.6</commons-net.version>
        <staxon-version>1.3</staxon-version>
        <dom4j-version>1.6.1</dom4j-version>
		<bes-version>9.5.2.008</bes-version>
        <springloaded-version>1.2.6.RELEASE</springloaded-version>
        <log4j-version>2.17.1</log4j-version>
        <!--cch低版本kafka-->
        <kafka_2.11-version>0.8.2.0</kafka_2.11-version>
        <!-- PDF转图片依赖包 -->
        <pdf-verison>2.0.12</pdf-verison>
        <!--oceanBase数据库依赖-->
		<oceanBaseClient-version>1.1.7</oceanBaseClient-version>
        <!--mongodb数据库依赖-->
        <springDataMongodb-version>3.3.5</springDataMongodb-version>
        <log4j-log4j-version>1.2.17-cloudera1</log4j-log4j-version>
		<hutool-verison>5.8.4</hutool-verison>
    </properties>

(5)packaging

打包类型,没有提供的话默认值为jar,而咱们的父级项目packaging都是pom。

 <!-- 父工程的packaging 是 pom -->
    <packaging>pom</packaging>

(6)依赖

Maven下载与在编译时链接依赖与其他所需要的目标,而且可以处理传递性依赖,使列表可以专注于项目所需的依赖.
依赖放在<dependencies>里面,包含若干个<dependency>。

在这里插入图片描述

6.1 groupId 与 artifactId 对应项目坐标

6.2 version 版本

6.3 classifier

可用于配置不同jdk的,比如让一个同时支持jdk8与jdk11,可以选择使用哪一个,方便在不同jdk中使用.

6.4 type

对应的依赖类型,默认为jar,通常对应与packaging

6.5 scope

scope表示类库与项目的关系

6.6 exclusions

排除不需要的依赖
包含子元素exclusion,每个exclusion都包含groupId与artifactId。

(7)modules 聚合(或多模块)

模块是pom列出的项目,并作为一个组执行,每个模块通过pom文件或项目的相对路径进行列出.
在这里插入图片描述

(8)profiles

<profiles>,包含一组<profile>,每个<profile>可以定义不同的配置,包含的元素有:
<id>:配置文件的id,比如测试的可以叫test.
<build>:相关构建信息.
<modules>:模块信息.
<repositories>:远程仓库信息.
<pluginRepositories>:插件仓库信息.
<dependencies>:依赖信息.
<reporting>:报表信息.
<dependencyManagement>:依赖管理信息.
<distributeManagement>:分发管理
<activation>:activation是profile的关键,profile的强大之处是某些情况下才可以修改基本pom,这些情况通过activation指定.

在这里插入图片描述

3.自动生成pom.xml

我们创建一个maven项目时,idea会自动给我们生成一个pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>demo_20230427</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SpringCloud】pom.xml文件解析 的相关文章

  • 不同的 JDK 更新会产生不同的 Java 字节码吗?

    假设场景 我有一个项目 其源合规性级别指定为 1 5 现在 我使用两种不同的 JDK 编译此项目 首先使用 JDK 6 Update 7 然后使用 JDK 6 Update 20 这两个不同的 JDK 是否会生成不同的 Java 字节代码
  • 按下按钮时清除编辑文本焦点并隐藏键盘

    我正在制作一个带有编辑文本和按钮的应用程序 当我在 edittext 中输入内容然后单击按钮时 我希望键盘和焦点在 edittext 上消失 但我似乎无法做到这一点 我在 XML 中插入了这两行代码 android focusable tr
  • Spring Data:限制自定义查询的结果

    在我的 Spring 数据存储库中 我 必须 使用自定义查询 Query注解 我知道我可以限制这样的命名查询中的结果数量 Iterable
  • 我需要显式关闭连接吗?

    我持有一个实例MongoClient and DB在我的应用程序中 每次我想执行某些操作时 我都会调用getCollection 我想知道是否需要显式关闭连接 就像connection close 在 JDBC 中 强调一下 我只有一个Mo
  • Jodatime 日期格式

    是否可以格式化 JodaTime 日期 这是代码 private static LocalDate priorDay LocalDate date1 do date1 date1 plusDays 1 while date1 getDayO
  • 确定代码是否在 App Engine 运行时 (Java) 上运行

    如何确定某些代码 Serv let 或简单的类 是否正在 Google App Engine 运行时 Java 上运行 以便决定是否使用 App Engine 的特定库 是否有一些可靠的运行时环境 ID 您可以检查com google ap
  • Spring 术语中命令、表单、业务和实体对象之间的区别?

    我试图理解这些对象在松散耦合系统方面的差异 业务对象与实体对象相同吗 我可以使用 MVC 中的业务或实体对象作为我的命令对象吗 命令对象与表单对象相同吗 只是寻找 Spring 术语和用法中对象类型的说明 我在 stackoverflow
  • Java 反射:如何检索匿名内部类?

    我在另一个类中有一个匿名内部类 SomeClass Both SomeClass class getClasses and SomeClass class getDeclaredClasses 返回空数组 我在中找不到一些关于此的提示Cla
  • 将多个视频文件合并到一个文件中

    我有多个以相同帧速率和分辨率录制的视频 我想将两个视频合并为一个视频 因此结果文件将是大视频 我正在使用 MP4 解析器 api 并使用下面的代码 Movie countVideo new MovieCreator build Channe
  • 给定一个单词列表 - 在 java 中完成单词的好的算法是什么?权衡:速度/效率/内存占用

    我正在探索潜在的免费 付费应用程序的硬件 软件要求 最终目标是移动 Java 应用程序 该应用程序将从这个简单的目标开始 给定数据库中相关单词的列表 能够对单个字符串输入进行单词补全 换句话说 我已经知道数据库的内容 但算法的内存占用 速度
  • 在 JavaFX 中拖动未装饰的舞台

    我希望将舞台设置为 未装饰 使其可拖动且可最小化 问题是我找不到这样做的方法 因为我遇到的示例是通过插入到主方法中的方法来实现的 我想通过控制器类中声明的方法来完成此操作 就像我如何使用下面的 WindowClose 方法来完成此操作 这是
  • perl 和 java 正则表达式功能之间有什么区别?

    perl 和 java 在支持哪些正则表达式术语方面有什么区别 这个问题仅涉及正则表达式 并且特别排除了how可以使用正则表达式 即使用正则表达式的可用函数 方法 以及语言之间的语法差异 例如java要求转义反斜杠等 特别令人感兴趣的是 j
  • java.lang.IllegalArgumentException:addChild:子名称“/”不唯一

    java lang IllegalArgumentException addChild 子名称 不唯一 通过在 tomcat webapps 文件夹中启用和禁用 saml 单点登录来替换现有 war 文件时遇到此问题 我正在使用 apach
  • 多对多不检索映射数据

    Spring boot 2 5 6 我无法安装版本 概要文件 java Getter Setter NoArgsConstructor AllArgsConstructor EqualsAndHashCode FieldDefaults l
  • 在Spring-Boot中,我们如何在同一个项目中连接两个数据库(Mysql数据库和MongoDB)?

    我正在尝试创建一个 Spring Boot 项目 其中我有一个要求 我想连接到不同的数据库 MySql 和 MongoDB 我是否需要做一些特殊的事情来连接到这两个数据库 或者 spring boot 会自动计算出自己连接到这两个数据库 我
  • java Runtime.getRunTime().exec 和通配符?

    我正在尝试使用删除垃圾文件 Process p Runtime getRuntime exec 只要我不使用通配符 它 就可以正常工作 即 Process p Runtime getRuntime exec bin rm f specifi
  • 使用链接列表插入优先级队列的方法

    首先 我觉得我应该提到这是一项作业 我并不是在寻找直接的代码答案 只是为了指出正确的方向 我们被要求在链表中实现优先级队列 我正在努力编写 insert 函数的第一部分 在代码中我尝试检查是否head包含任何内容 如果没有则设置为head
  • Java 相当于 Python 的 urllib.urlencode(基于 HashMap 的 UrlEncode)

    From https stackoverflow com questions 2018026 should i use urllib or urllib2 2018103 2018103 Java 中 Python 的 urllib url
  • spring data jpa 过滤 @OneToMany 中的子项

    我有一个员工测试实体是父实体并且FunGroup信息子实体 这两个实体都是通过employeeId映射 我需要一种方法来过滤掉与搜索条件匹配的子实体 以便结果仅包含父实体和子实体 满足要求 员工测试类 Entity name Employe
  • 升级到 Tomcat 8 时出现 ClassNotFoundException

    我最近将 NetBeans IDE 从 v7 3 升级到 v8 突然我的应用程序在连接到数据库时在服务器启动时抛出异常 这两个版本的 IDE 之间的唯一区别是后者使用 Tomcat 8 异常日志 javax naming NamingExc

随机推荐

  • C++实现简单的固定大小内存分配器

    背景介绍 最近在了解性能优化相关的知识 了解到内存分配是一个可优化性能的方向 在相关书籍中看到一个固定大小的内存分配器实现 觉得挺有意思的 这里跟大家分享 据说比通用的内存分配malloc 性能有不少提升 源码实现 这里的代码是根据 c性能
  • Java会话技术

    会话技术 会话指的是客户端浏览器和服务端之间的度偶次请求和响应 当打开浏览器 访问网站地址后 会话开始 当关闭浏览器 或者到了过期时间 会话结束 就像打电话只要不挂电话就是一次会话 会话过程中产生的数据可以通过会话技术Cookie Sess
  • 抖音Scheme全网最全,startActivity地址

    例子 部分参数可省略 跳转主页并关注 snssdk1128 user profile 72673737181 refer web gd label click wap profile bottom type need follow need
  • oracle值相等时排序规则,Oracle中排序列中值相同引发的问题

    有个表 表名是Policy 有三个字段 a b c 这个表有两行 c列中的数据始终为0 我运行一下的sql语句 这个问题在Oracle的新闻中心被提出了一段时间 有个表 表名是Policy 有三个字段 a b c 这个表有两行 c列中的数据
  • vue element ui table 过滤功能实现

    Element UI代码
  • python中的list如何深度拷贝

    在 Python 中 可以使用 copy 模块中的 deepcopy 函数来进行深度拷贝 示例 import copy original list 1 2 3 4 5 6 7 8 9 copied list copy deepcopy or
  • c++全局变量的使用方式

    c 全局变量的使用方式 在cpp文件中定义 在头文件中定义 在cpp文件中定义 主函数中的使用 extern int aa extern int bb 在头文件中定义 在主函数中 在 h文件中声明 需要加extern关键字 在 cpp文件中
  • Linux环境下gcc编译链接库-lz -lrt -lm -lc都是什么库?

    编译链接库 lz lrt lm lc都是什么库 lz 压缩库 Z lrt 实时库 real time shm open系列 lm 数学库 math lc 标准C库 C lib dl 是显式加载动态库的动态函数库
  • Linux下ImageNet2012数据集下载及其配置

    简明扼要 一 训练集下载 137G http www image net org challenges LSVRC 2012 nnoupb ILSVRC2012 img train tar 验证集下载 http www image net
  • FCN模型训练中遇到的困难

    FCN模型训练中遇到的困难 标签 深度学习FCN神经网络caffe 2017 02 24 10 54 2675人阅读 评论 6 收藏 举报 分类 深度学习 18 版权声明 本文为博主原创文章 未经博主允许不得转载 前前后后大概忙了3个月了
  • 嵌入式数据库sqlite3【进阶篇】-子句和函数的使用,小白一文入门

    更多信息请关注公众号 一口Linux 在 嵌入式数据库sqlite3 基础篇 基本命令操作 小白一看就懂 一文中讲解了如何实现sqlite3的基本操作增删改查 本文介绍一些其他复杂一点的操作 比如where order by having
  • 基于内容的视频信息检索系统

    基于内容的视频信息检索系统 汪志强 江西财经大学信息管理学院 09信息管理与信息系统2班 摘 要 本文从基于内容的视频信息检索技术的发展历史出发 对基于内容的视频检索系统的技术要点及主要的功能模块进行了讨论和分析 并说明了当今技术存在的缺陷
  • MFC Windows 程序设计(一)-程序员的解放

    MFC Windows 程序设计 一 程序员的解放 程序之美 很久很久以前 程序员是一个很辛苦的工作 因为那时候大多数的软件都是用C语言编写的 Microsoft Visual Basic还没有出现 更不要说现在的Java Android
  • Tomcat修改默认端口号

    1 背景 在默认情况下 tomcat的端口是8080 使用了两个tomcat 那么就需要修改其中的一个的端口号才能使得两个同时工作 2 方法 2 1改动一 那么 如何修改tomcat的端口号呢 首先到安装目录 或者解压目录 下找到conf文
  • VUE之Echarts图表x轴y轴提示文字过长处理为省略号

    只需对显示文字格式修改即可 yAxis type category axisLine show false 轴线 axisTick show false 去除刻度 axisLabel formatter function params co
  • silk lobe资源公众号_资源合集

    11 月 十一月 iOS内置韩文字体 Apple SD Gothic Neo 锤子 黑 Smartisan 与方正合作定制的UI黑体 Emoji 鸽了好久的可爱 Emoji 字体 移植到安卓手机 沙扬娜拉 岩田仿宋 复古聚珍仿宋风格 返璞归
  • chatgpt赋能python:Python如何优化中文SEO

    Python如何优化中文SEO Python 作为一种流行的编程语言 可以用来开发各种不同的应用程序 当涉及到网络营销和搜索引擎优化 SEO 时 Python的功能也非常有用 在本篇文章中 我们将介绍如何使用Python来优化中文SEO 以
  • opencv显示对比

    在opencv中我们一般都要展示处理前后图像的对比 有时候我们会imshow两次来展示两张图片 那为什么我们不放在一个图片里呢 这样显然是更加优雅的模式 上代码 Mat combineImage Mat before Mat after a
  • Go语言实现Onvif客户端:4、配置网络信息

    Go语言实现Onvif客户端 4 配置网络信息 文章目录 Go语言实现Onvif客户端 4 配置网络信息 1 思路 2 代码 上一节获取到网络接口token后 就可进行一些网络配置了 这里我们暂时只实现进行ip地址的配置接口和封装 1 思路
  • 【SpringCloud】pom.xml文件解析

    本文档为本人学习交流所用 参考原文档 https www cnblogs com hoyong articles 13034270 html 1 pom xml是什么 pom是Project Object Model 项目对象模型 的缩写