概述
Maven节点介绍
文章目录
- Maven节点介绍
- project
- groupId
- artifactId
- version
- packaging
- name
- scm
- properties
- dependencyManagement
- build
- pluginManagement
- plugin
- resources
- resource
- parent
project
项目顶层节点,写法固定,不做过多解析。
groupId
说明该项目是由哪个部门开发的,一般是所在公司的域名的倒置
artifactId
该项目在该公司的唯一识别标识
version
项目版本号
Maven中的所有项目都适用以上三个节点来联合表示,使用这三个节点,既可以表示自己在maven中的唯一位置,也可以准确导入其他依赖包。
packaging
打包方式,值选项为:pom
, jar
, maven-plugin
, ejb
, war
, ear
, rar
默认打包方式为jar
如果当前pom是作为parent来设计,让其他pom来导入的话,其打包方式必须为pom
name
当前包的名字
scm
版本控制链接,比如github的链接
properties
按照<name>value</name>
的格式来定义变量,供pom的其他部分来调用,便于管理
dependencyManagement
依赖管理节点,格式为:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-amqp</artifactId>
<version>${activemq.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
可以看出来和dependencies很像,但是两者有区别。
- dependencyManagement是被用来做管理的,通常出现在父pom文件中,对所有引入该pom的子pom文件做统一的版本管理以避免版本冲突带来的问题
- 定义在dependencyManagement内部的dependency不会被自动装载,需要子pom在dependencies节点内进行显式引入才会自动下载
- 在dependencyManagement中注册的依赖应该已经有了明确的版本信息(否则就失去了第一条的作用),后面子pom进行一来导入的时候可以不写版本信息,会自动从父pom中寻找到版本信息。这就保证了所有的子模块版本一致。
build
构建工程的顶级节点
pluginManagement
功能类似于dependencyManagement,格式为:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-amqp</artifactId>
<version>${activemq.version}</version>
</plugin>
</plugins>
</pluginManagement>
plugin
插件节点
resources
资源管理节点,内部为多个resource
resource
https://stackoverflow.com/questions/60041457/spring-boot-starter-parent-resources-includes-excludes-explained
https://my.oschina.net/anxiaole/blog/1613348
具有多个子节点,用于指定资源文件的路径
在spring-boot-starter-parent
文件中,有一段比较‘奇怪’的代码:
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/application*.yml</include>
<include>**/application*.yaml</include>
<include>**/application*.properties</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<!-- <filtering>true</filtering> -->默认为false
<excludes>
<exclude>**/application*.yml</exclude>
<exclude>**/application*.yaml</exclude>
<exclude>**/application*.properties</exclude>
</excludes>
</resource>
两者看着比较奇怪,两块代码相反,而且重复。其实不然,这段代码是为了将application的配置文件拷贝到程序运行生成的文件夹中,其中第一块代码是将满足命名要求的资源文件复制到指定文件夹,后一块代码将剩下的其他的配置文件复制到指定文件夹。两者合作才能保证不遗漏。
我还是觉得多余,直接这样写不行吗?
<resources> <resource> <directory>${basedir}/src/main/resources</directory> </resource> </resources>
parent
引入父POM的节点,内部依然是老三样:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.0-SNAPSHOT</version>
最后
以上就是无心自行车为你收集整理的Maven项目pom文件节点介绍Maven节点介绍的全部内容,希望文章能够帮你解决Maven项目pom文件节点介绍Maven节点介绍所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复