Maven中的pom.xml文件
一、什么是pom.xml
pom.xml是Maven项目的核心配置文件,它是 项目对象模型 - Project Object Model(POM)的缩写。它使用 XML 格式定义了项目的基本信息、依赖项、构建插件和任务等。使用pom.xml,我们可以轻松地管理项目的构建和依赖关系,让我们能够更专注于业务逻辑的开发。
二、pom.xml文件结构
pom.xml
文件通常的结构如下所示,主要用于定义 Maven 项目的配置信息和构建过程中所需的各种依赖和插件:
<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>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging>
<!-- 项目依赖 -->
<dependencies>
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<scope>...</scope>
</dependency>
<!-- 可以有多个依赖项 -->
</dependencies>
<!-- 构建配置 -->
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<plugins>
<plugin>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<!-- 插件配置 -->
</plugin>
<!-- 可以有多个插件 -->
</plugins>
</build>
<!-- 仓库配置 -->
<repositories>
<repository>
<id>...</id>
<url>...</url>
</repository>
<!-- 可以有多个仓库 -->
</repositories>
</project>
详细解释:
<modelVersion>
: POM 模型的版本,目前是 4.0.0。<groupId>
: 项目组织或公司的唯一标识符。<artifactId>
: 项目的唯一标识符,通常是项目名称。<version>
: 项目的当前版本号。<packaging>
: 项目的打包方式,例如 jar、war 等。<dependencies>
: 项目依赖的外部库或模块。<build>
: Maven 构建过程的配置信息,包括源码目录、测试目录和插件配置。<plugins>
: 在构建过程中使用的 Maven 插件。<repositories>
: Maven 从中获取依赖项和插件的仓库列表。
1.dependency
与项目的依赖列表相关的标签最外层由 <dependencies>来囊括,内部包含了各种具体的依赖
<dependency>,该标签用于指定一个依赖项,它包含以下几个子标签
<groupId>:指定依赖项的groupId,项目的组名
<artifactId>:指定依赖项的artifactId,项目的唯一标识符
<version>:指定依赖项的版本号。
<scope>:指定依赖项在项目中的使用范围。
其中的 <scope>一般包含以下几种范围:常用的有compile、test、provided 和 runtime
compile:依赖库默认的 scope,表示该依赖库在编译、测试、运行时均需要使用。
provided:表示该依赖库只在编译和测试时需要使用,而在运行时已经被系统或者容器提供,所以不需要打包到最终的应用程序中。
runtime:表示该依赖库只在运行时需要使用,而在编译和测试时则不需要。
test:表示该依赖库只在测试时需要使用,而在编译和运行时则不需要。
2.repository
当然,我们还能在pom文件中支持指定Maven仓库,即使用 <repositories> 和 <repository>标签,
<repository>用于指定一个Maven仓库,它包含以下几个子标签:
<id>:指定Maven仓库的ID。
<name>:指定Maven仓库的名称。
<url>:指定Maven仓库的URL
3.properties
properties 严格来说,并不一定是项目本身的信息,而是人为设置的属性或者说宏,这个标签用来定义和管理项目中所需要的属性,其作用有以下几个:
- 统一管理项目中的常用属性,比如版本号、路径、插件版本等,方便统一修改和管理。
- 可以在配置过程中使用 ${…}占位符引用这些属性,使得配置更加灵活和便捷。
- 避免硬编码,提高代码的可维护性和可读性
比如说我们可以这么配
<properties>
<project.name>demo-project</project.name>
<project.version>1.0.0</project.version>
<jdk.version>1.8</jdk.version>
</properties>
....省略其余部分
<dependency>
<groupId>com.example.demo</groupId>
<artifactId>${project.name}-api</artifactId>
<version>${project.version}</version>
</dependency>
4.parent
在 Maven 的 pom.xml
文件中,<parent>
元素是用来指定当前项目继承的父项目(Parent Project)的配置信息。这种配置方式被称为 “继承” 或者 “继承机制”,允许子项目继承父项目的配置,从而简化项目的管理和维护。
<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>com.example.myproject</groupId>
<artifactId>myproject-core</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!-- 继承自父项目 -->
<parent>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>1.0.0</version>
</parent>
<!-- 其他配置 -->
<dependencies>
<!-- 项目依赖 -->
</dependencies>
<build>
<!-- 构建配置 -->
</build>
<repositories>
<!-- 仓库配置 -->
</repositories>
</project>
在这个例子中:
<parent>
元素中的<groupId>
、<artifactId>
和<version>
指定了父项目的坐标信息。- 当前项目(
myproject-core
)继承自parent-project
,因此会继承父项目中定义的基本配置,如版本管理、插件管理等。 - 在
<dependencies>
、<build>
和<repositories>
等部分,可以定义当前项目自己的特定配置,这些配置会与父项目的配置合并或覆盖,以形成最终的项目配置。
通过使用 <parent>
元素,可以避免在子项目中重复定义相同的配置信息,提高项目的一致性和可维护性。
三、 项目的构建配置
项目的构建配置信息,包括编译器版本、插件列表、源代码目录等
1.build
build
用于定义项目的构建配置,包括源代码目录、资源目录、插件等,其中代码部分的设置如下
<project>
.... 省略其他部分
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.plugins
plugins
的作用是定义 Maven 插件, plugins 主要用于扩展 Maven 的功能,帮助开发人员更方便地构建、打包、发布项目。
maven-compiler-plugin
比方说,最常用的编译功能,我们可以在pom里面这么写
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<showWarnings>true</showWarnings>
<compilerArgs>
<arg>-Xlint:unchecked</arg>
<arg>-Xlint:deprecation</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
各子标签的作用如下:
<source>:指定Java源代码的版本,例如1.8表示Java 8。
<target>:指定编译后的字节码版本,例如1.8表示Java 8。
<encoding>:指定源代码的编码格式。
<showWarnings>:是否显示编译警告信息,true表示显示,false表示不显示。
<compilerArgs>:可选参数,可以添加多个编译器参数,例如-Xlint选项用来启用编译器警告检查。
如果我们按示例中配置,我们就指定了编译器的源和目标版本为1.8,当我们使用 mvn compile 命令的时候,这个插件将会编译我们的 Java 代码,并将编译后的 class 文件放置在 target 目录下。
四、pom.xml的使用
经过了上面的学习,不难发现,使用pom.xml可以轻松地管理项目的构建和依赖关系,其主要用法其实有三种:
- 添加依赖:在dependencies标签下添加依赖,包括groupId、artifactId、version、scope等信息。
- 修改打包方式:在packaging标签下修改项目的打包方式,通常是jar、war或pom。
- 配置插件:在build标签下配置插件,包括groupId、artifactId、version等信息。插件可以帮助我们处理各种构建任务,比如编译代码、生成文档、打包文件等。
原文地址:https://blog.csdn.net/2301_77358195/article/details/140518578
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!