maven中的pom文件的作用以及其中的标签详解

因为自己在pom文件上花费了很长时间解决问题,因为自己对pom文件不是很熟悉和了解,然后就自己找了一些标签,来进一步让自己理解pom文件。
pom文件中书写的标签的详解:

pom文件的作用:
Maven 是专门用于构建和管理Java相关项目的管理工具。
1.使用Maven管理的Java 项目都有着相同的项目结构
2.统一维护jar包
POM是项目对象模型(Project Object Model)的简称
该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。
使用groupdId:artifactId:version的形式来唯一确定一个项目
POM之间的关系,继承、聚合与依赖
继承:子项目继承父项目的pom.xml,在子项目中定义父项目
依赖:一个dependency元素定义一个依赖关系
聚合:聚合和关联多个项目中相同的配置,在被聚合项目中定义其子模块
以使用${propertyName}的形式引用属性

pom文件中一些标签的作用:

4.0.0  :指定了当前Maven模型的版本号,
对于Maven2和Maven3来说,它只能是4.0.0,pom必须遵守一个模型,
它总是设置为4.0.0在Maven 2和3,因为,目前,没有其他模型
com.example:是项目组织唯一的标识符,实际对应JAVA的包的结构,
是main目录里java的目录结构。是项目组织唯一的标识符, 
比如我的项目叫test001  那么GroupID应该是 com.lixiaoming.test001   域名.公司名.项目名
 demo:是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
就是项目的唯一的标识符, 一般是 项目名-xxx   比如test001-model 
0.0.1-SNAPSHOT:指定了myapp项目的当前版本,SNAPSHOT意为快照,
说明该项目还处于开发中,是不稳定的版本。 
demo:声明了一个对于用户更为友好的项目名称,不是必须的,推荐为每个pom声明name,
以方便信息交流。 
Demo project for Spring Boot:见名知意,这是关于这个项目的描述。

:
最常用的功能,就是定义子标签的依赖版本号,然而它的功能却不仅仅如此定义了一个父标签
spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,
所以我们在写依赖时才不需要写版本号
使用默认编码格式为 UTF-8
定义了 Java 编译版本为 1.8
定义了针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 
定义的不同环境的配置文件,例如 application-dev.properties 和 application-dev.yml
执行打包操作的配置
自动化的资源过滤
自动化的插件配置
参考文章:https://blog.csdn.net/yjn1995/article/details/97617811

 :可以集中管理jar包版本,进行自定义标签,在本pom文件中使用具体使用如下。
方便统一修改版本,

    
        1.8
        UTF-8
        UTF-8
        2.1.14.RELEASE
    

${spring-boot.version}  访问版本号


 两个标签的关系和作用:

相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)

     dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。
     如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,
     并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;
     另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

参考文章:https://www.cnblogs.com/feibazhf/p/7886617.html

坐标详解:
org.sonatype.nexus 
nexus-indexer 
2.0.0 
jar 

groupId
定义当前maven项目隶属的实际项目。
groupId的表示方式与Java包名的表示方式类似,如: org.sonatype.nexus

artifactId
该元素定义实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目的名称作为artifactId的前缀。
如:nexus-indexer
在默认情况下,maven生成的构件,其文件名会以artifactId作为开头,如:nexus-indexer-2.0.0.jar。

packaging【可选的,默认为jar】:
当不定义packaging时,maven会使用默认值jar。

classifier:
该元素用来帮助定义构件输出的一些附属构件。
项目构件的文件名是坐标相对应的,一般的规则为:artifact-version.packing

  :设置,主要用于编译设置

在Maven的pom.xml文件中,存在如下两种:
(1)全局配置(project build)
针对整个项目的所有情况都有效
(2)配置(profile build)
针对不同的profile配置
3 plugins配置
用于指定使用的插件
4 pluginManagement配置
pluginManagement的配置和plugins的配置是一样的,只是用于继承,使得可以在孩子pom中使用。
参考文章:
https://blog.csdn.net/jiachunchun/article/details/90235498

其中pom文件中的repositories的作用:
在pom.xml中repositories标签的作用是用来配置maven项目的远程仓库。示例如下:



   

     远程仓库唯一标识符

     远程仓库的url

  


参考博客:https://blog.csdn.net/zhujun_xiaoxin/article/details/52491038

你可能感兴趣的:(java,maven,spring,boot)