一、介绍

这里我们以若依开源框架为例,我们先讲解,父工程pom文件,之后再讲解子工程pom文件。

首先,我们先介绍若依前后端分离项目的目录结构;

一、父工程pom.文件

父工程pom文件注释:(每个标签,只注释一次,相同标签不重复介绍)

1、声明该pom文件所采用的xml版本为1.0(也就是页面所采用的标签格式,解析的时候也按照相应的格式进行解析:例如我们看到 x+y=z;按照我们的逻辑就是x加y=z;而不会把其理解为其他逻辑;如果是别的版本中,那么x+y=z的逻辑,就不一定是x+y=z,可能是别的相应符号所标识或者相应表达式)感兴趣的可以去SSM学习章节具体学习一下文件约束相关协议;
2、encoding="UTF-8"? 的含义表示,我们pom.xml文件页面中,中文采用的是utf-8编码方式,在展示的过程中,我们也要按照utf-8格式进行解析,例如utf-8一个中文汉字为2个字节;gbk一个汉字为3个字节,那么如果我们页面中采用的是utf-8编码方式 有2个连续的汉字 占用4个字节,解析的时候按照6个字节所解析,那么必定会造成乱码。
<?xml version="1.0" encoding="UTF-8"?>3、project是pom文件的根元素  是标签:根标签,表示对当前工程进行配置、管理
<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">4、描述pom文件遵循从哪个版本的项目描述符  modelVersion 标签:从Maven 2 开始就固定为4.0.0<!--代表当前pom.xml 所采用对标签结构--><modelVersion>4.0.0</modelVersion>5、坐标信息   范围从大到小    groupId > artifactId > version5.1 groupId描述项目组织的唯一标识,也就是项目是哪个公司或者组织开发的,通常使用域名或组织名称<groupId>com.ruoyi</groupId>5.2 artifactId项目唯一标识,通常使用项目或模块名     如果一个项目中有多个工程,在代表项目下面对一个模块 <artifactId>ruoyi</artifactId>5.3 version项目版本号<version>3.8.4</version>6. 项目名称<name>ruoyi</name>7. 项目地址<url>http://www.ruoyi.vip</url>8. 项目详情<description>若依管理系统</description>9.对项目的一些属性进行定于,这个属性可以是自定义属性<properties>自定义属性标签,标签名,就是属性名称,标签值就是属性值, 可以通过${标签名}的方式引用其所对应的值<ruoyi.version>3.8.4</ruoyi.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><maven-jar-plugin.version>3.1.1</maven-jar-plugin.version><druid.version>1.2.15</druid.version><bitwalker.version>1.21</bitwalker.version><swagger.version>3.0.0</swagger.version><kaptcha.version>2.3.3</kaptcha.version><pagehelper.boot.version>1.4.6</pagehelper.boot.version><fastjson.version>2.0.20</fastjson.version><oshi.version>6.4.0</oshi.version><commons.io.version>2.11.0</commons.io.version><commons.fileupload.version>1.4</commons.fileupload.version><commons.collections.version>3.2.2</commons.collections.version><poi.version>4.1.2</poi.version><velocity.version>2.3</velocity.version><jwt.version>0.9.1</jwt.version></properties>Maven 可以通过(一般父工程中才有dependencyManagement ) dependencyManagement 元素对依赖进行管理,它具有以下 2 大特性:
在该元素下声明的依赖不会实际引入到模块中(子模块),只有在 (子模块)dependencies 元素下同样声明了该依赖,才会引入到模块中。
该元素能够约束 dependencies 下依赖的使用,即(子模块) dependencies 声明的依赖若未指定版本,则使用 (父工程)dependencyManagement 中指定的版本,(如果子模块中指定了版本)否则将覆盖(父工程中) dependencyManagement 中的版本。<dependencyManagement>9.1 引入Jar依赖列表 dependencies标签:配置具体依赖信息,可以包含多个 dependency 子标签<dependencies>9.2  <!--配置一个具体的依赖信息--><!-- SpringBoot的依赖配置--><dependency>9.3 坐标信息:导入那个jar包,就引入什么坐标<groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.14</version>9.5     9.5.1 Maven中有2种方法可以,避免重复造轮子,一种是继承,另外一种是引用;9.5.2 继承就是,就是若依项目中(也就是本文所举例)父工程中,定义dependencyManagement而子工程不需要写版本号,直接继承父工程版本号,当然如果子工程也写版本号,那么会使用自己的版本号;9.5.3 引用与继承有些类似,不过确是,我们父工程要引用 原始起步依赖,那么我们父工程这个依赖类型要与原始依赖类型要一致,比如引入的是一个java工程,那么type 类型就应该是jar,也就是默认类型,可以不写,在本文中我们引入是spring-boot-dependencies这个Maven工程依赖,其原始类型是pom类型,所以我们这里必须写pom类型,并且要配合<scope>import</scope>标签所使用。相当于把依赖复制过来,而不是进行继承。<type>pom</type>9.4 该jar包的作用域 一共6种<!--如果不设置scope标签,m默认值就是compiletest 当前依赖仅参与项目的单元测试runtime 当前依赖仅参与项目的运行阶段provided 与compile 类似,区别在与不会参与项目的最终打包system 从本地磁盘中引用一个jar包--><!--如果作用于是system,那么还需要额外加入一个标签,如下--><scope>import</scope></dependency><!-- 阿里数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!-- 解析客户端操作系统、浏览器等 --><dependency><groupId>eu.bitwalker</groupId><artifactId>UserAgentUtils</artifactId><version>${bitwalker.version}</version></dependency><!-- 系统模块--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-system</artifactId><version>${ruoyi.version}</version></dependency></dependencies></dependencyManagement>10.定义子模块<modules>限于篇幅我把一些子工程剔除了。这篇文章主要是让大家明白标签结构和引用关系的。<module>ruoyi-admin</module><module>ruoyi-system</module></modules>11.打包方式必须为pom方式,父工程固定写法<packaging>pom</packaging><dependencies></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build><repositories><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></project>

二、子工程pom文件

子工程pom文件解析:

<?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"><parent><artifactId>ruoyi</artifactId><groupId>com.ruoyi</groupId><version>3.8.4</version></parent><modelVersion>4.0.0</modelVersion><packaging>jar</packaging><artifactId>ruoyi-admin</artifactId><description>web服务入口</description><dependencies><!-- spring-boot-devtools --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> <!-- 表示依赖不会传递 --></dependency><!-- swagger3--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId></dependency><!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 --><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.6.2</version></dependency><!-- Mysql驱动包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- 核心模块--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-framework</artifactId></dependency><!-- 定时任务--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-quartz</artifactId></dependency><!-- 代码生成--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-generator</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.1.1.RELEASE</version><configuration><fork>true</fork> <!-- 如果没有该配置,devtools不会生效 --></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin>   <groupId>org.apache.maven.plugins</groupId>   <artifactId>maven-war-plugin</artifactId>   <version>3.1.0</version>   <configuration><failOnMissingWebXml>false</failOnMissingWebXml><warName>${project.artifactId}</warName></configuration>   </plugin>   </plugins><finalName>${project.artifactId}</finalName></build></project>

关于Maven中pom文件标签的详解,分别对比父工程pom文件与子工程pom文件。相关推荐

  1. Maven中父子项目依赖传递详解

    父子项目依赖传递实现方式 首先创建父项目 先创建一个项目example-trains-father. 添加父项目打包方式,直接在URL下面添加,即是<project></projec ...

  2. linux修改文件内容_详解5种实用方法---Linux系统清空或删除大文件内容

    概述 有时我们在处理Linux终端中的文件时,可能要去清除文件的内容,而无需使用任何Linux命令行编辑器打开它.怎么才能实现呢?下面通过几种不同的方式教大家清空文件内容. 1.通过重定向到空来清空文 ...

  3. linux命令打包文件,Linux系统中打包文件的命令详解

    linux系统中遇到要打包文件的时候我们该使用什么命令呢?下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux系统中打包文件的命令详解的相关知识,希望对大家有帮助! linux系统 ...

  4. php文件上传详解,PHP文件上传实例详解!!!

    这篇文章主要介绍了PHP文件上传实例代码,需要的朋友可以参考下 首先来看下上传部分的表单代码: 文件:  这里有几个要注意的地方,首先看这句 ,这里我们采用POST方法,个别浏览器还支持PUT方法,当 ...

  5. Linux下文件查找使用详解-羽飞作品

    Linux下文件查找使用详解 (1/3) http://www.boobooke.com/v/bbk1579 Linux下文件查找使用详解 (2/3) http://www.boobooke.com/ ...

  6. java实现for文件删除_Java 添加、删除、替换、格式化Word中的文本的步骤详解(基于Spire.Cloud.SDK for Java)...

    Spire.Cloud.SDK for Java提供了TextRangesApi接口可通过addTextRange()添加文本.deleteTextRange()删除文本.updateTextRang ...

  7. 加载vue文件步骤_vue中.vue文件解析步骤详解

    这次给大家带来vue中.vue文件解析步骤详解,vue中.vue文件解析的注意事项有哪些,下面就是实战案例,一起来看一下. 我们平时写的 .vue 文件称为 SFC(Single File Compo ...

  8. JSP中meta标签之详解

    JSP中meta标签之详解 2013年01月26日 16:09:27 阅读数:5589 JSP标签 <meta.....>作用总结 <metahttp-equiv="pra ...

  9. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)

       本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...

最新文章

  1. Java实用教程 课堂测试(2021C++补考题目)
  2. 大学计算机实验教程实验报告2.2,大学计算机实验2-实验报告.pdf
  3. SpringDataRedis对Redis的数据类型的常用操作API的使用代码举例
  4. 数字类型的不正确转换漏洞
  5. Spark天堂之门解密
  6. windows系统c++多线程开发
  7. 关于h5中背景音乐的自动播放
  8. React Native 宣布重构计划!
  9. 服务器温度检测软件_科技产品—整机柜服务器—产品简介
  10. linux 系统监控、诊断工具之 lsof 用法简介
  11. 小程序如何上传代码到服务器,云服务器怎么上传小程序代码
  12. CSS半透明边框效果
  13. 什么样的企业适合用EV证书呢?
  14. 【转】为什么360这种软件存活至今?程序员:打不死的小强,春风吹又生
  15. chip-seq三个生物学重复样品处理——IDR
  16. python显示等待隐式等待
  17. 机器人瓦力漫威_章节目录 86、机器人瓦力
  18. CFileDialog 和 CFileDialog构造函数
  19. 13、hive在启动beeline客户端时报错:User: xxx is not allowed to impersonate xxx
  20. python编写程序,生成包含 20 个随机数的列表,然后将前 10 个元素升序排列,后 10 个元 素降序排列,并输出结果。

热门文章

  1. 生活在数据时代;聊聊数据分析在当今社会生活中的有趣应用
  2. 复杂计算器代码,C++
  3. IEEE会议latex模板参考文献转为bibitem
  4. 汽车中控屏显示com点android,老车遇上安卓大屏导航中控的坑
  5. 可控硅温控器的组成和可控硅的选择
  6. 利用unity和steamVR完成场景漫游(五) 学习VRTK中简单案例
  7. 第47章 表单验证之DataAnnotations与FluentValidation
  8. 顺序栈的创建以及各种操作
  9. centos8 手动修改网络配置以及怎么重启网络,添加开机自启动
  10. joda-money的使用