1. parent标签
指向父项目,标签内包括:
- groupId, 被继承父项目的全球唯一标识
- artifactId, 被继承父项目的构件标识
- version,被继承父项目的版本
- relativePath,父项目pom文件的相对路径,默认值 …/pom.xml,根目录下的pom文件,先从当前项目路径查找,找不到去本地仓,然后远程仓
示例:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
2. modelVersion标签
声明遵从哪个pom文件的模型版本
示例:
<modelVersion>4.0.0</modelVersion>
3. groupId、artifactId、version、name、url、description标签
这些标签依次为项目全球唯一标识符、构件标识符、版本号、名称、项目主页的URL(可不写)、项目描述
示例:
<groupId>com.chengxy</groupId>
<artifactId>single</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>single</name>
<description>Demo project for Spring Boot</description>
4. properties标签
properties可以自定义属性值,这些值可以通过 ${ } 用到pom文件内的任何地方,一般用来管理版本。示例:
<properties>
<java.version>1.8</java.version>
</properties>
<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>
</configuration>
</plugin>
5. packaging标签
定义项目打包类型,值有jar、war、ear、pom。一般父工程用pom,子工程用jar。示例:
<packaging>jar</packaging>
6. modules标签
子模块,点击会进入到子模块的pom文件
<modules>
<module>base</module>
<module>main</module>
</modules>
7. dependencyManagement和dependencies标签
dependencies标签会自动引入标签内的全部依赖,并且所有继承该项目的子项目都会默认继承标签内的依赖
dependencyManagement标签只声明依赖但不引入,也就是说如果继承该项目的子项目中没有声明标签内的依赖,是不会继承这个依赖的;但是如果在子项目中写了该依赖,却没有指定版本,将从父项目中继承该项;如果子项目中写了该依赖,也指定了版本,就会使用子项目中的版本依赖。
dependencyManagement示例:
父pom文件:
<dependencyManagement>
<dependencies>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
子pom文件:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
8. build标签(project build全局配置,包含plugins标签、resources标签)
此处的build标签指的是全局配置(project build),包括:
- defaultGoal标签:项目build时,如果没有指定目标,将使用的默认值
- directory:build之后的文件存放目录,默认为 ${basedir}/target
- finalName:目标文件名称,默认为 ${artifactId} - ${version}
<build>
<finalName>${project.artifactId}</finalName>
</build>
- resources:包含很多个resource组合
- resource:描述与项目关联的资源文件的位置和配置等
- testResources:类似resource,只不过在test时使用
详细说下resources以下标签:
- resource:单个资源
- directory:定义要扫描的目录
读取全部文件
<build>
<resources>
<resource>
<directory>src/main/webapp</directory>
</resource>
</resources>
</build>
- filtering:是否开启替换,比如文件里有${ }时如果将此标签设置为ture,项目会自动把真实值覆盖,如果为false,将不替换引用值。
<build>
<resources>
<resource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
- includes:仅读取指定的文件或文件夹的内容
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>config/dubboSource/*.xml</include>
</includes>
</resource>
</resources>
</build>
- excludes:除了指定的文件或文件夹的内容,其他都读取
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>config/dubboSource/*.xml</include>
</excludes>
</resource>
</resources>
</build>