有关 maven 其他配置讲解参考
maven 配置文件 setting.xml 详解
pom.xml 文件是 Maven 项目的核心配置文件,其中包含了项目的元数据 、构建配置 、依赖管理等信息。以下是一个 pom.xml 文件的主要部分:
xml
<?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">
<!-- 项目基本信息 -->
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-project</artifactId>
<version>1.0.0</version>
<!-- 项目依赖配置 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.8.RELEASE</version>
</dependency>
<!-- 其他依赖配置 -->
</dependencies>
<!-- 构建配置 -->
<build>
<!-- 插件配置等 -->
</build>
<!-- 其他配置 -->
</project>
1、<project>
元素: 顶层元素,定义整个 Maven 项目。
<modelVersion>
元素: Maven 模型的版本号,当前版本为 4.0.0。
<groupId>
元素: 项目组标识符,通常采用反转的域名风格。
<artifactId>
元素: 项目的唯一标识符。
<version>
元素: 项目的版本号。
<packaging>
元素用于指定 Maven 项目的打包方式,即最终产物的类型。该元素位于 pom.xml 文件的 <project>
元素下。以下是 <packaging>
元素的常见取值:
-
jar
(默认值): 生成 JAR 文件。xml<packaging>jar</packaging>
-
war
: 生成 WAR 文件,用于部署到 Java Web 容器(如 Tomcat)。xml<packaging>war</packaging>
-
pom
: 用于聚合其他 Maven 项目,不生成实际的构建产物。 POM 项目可以用于聚合多个子项目,将它们组织成一个逻辑单元。父项目的 POM 文件中可以包含一些通用的配置信息,例如依赖管理、插件配置等,这样子项目可以继承这些配置,减少重复的配置工作。使用 POM 项目作为父项目进行项目聚合在微服务系统中是一种常见的做法xml<project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>my-parent</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <!-- 聚合项目的打包方式为 POM --> <!-- 子项目列表 --> <modules> <module>module1</module> <module>module2</module> <!-- ... 其他子项目 ... --> </modules> <!-- 其他聚合项目的配置 --> </project>
-
ear
: 生成 Enterprise Archive(EAR)文件,用于部署到 Java EE 应用服务器。xml<packaging>ear</packaging>
-
maven-plugin
: 用于构建 Maven 插件。xml<packaging>maven-plugin</packaging>
-
bundle
: 用于构建 OSGi bundle。xml<packaging>bundle</packaging>
-
其他自定义类型: Maven 允许用户定义自己的打包类型,例如一些特定的构建工具或应用程序类型。
xml<project> <!-- 其他项目配置 --> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>my-project</artifactId> <version>1.0.0</version> <!-- 指定打包方式为 JAR --> <packaging>jar</packaging> <!-- 其他项目配置 --> </project>
通过设置 元素,可以指定 Maven 构建工具在执行 mvn package 等构建命令时生成特定类型的构建产物。不同的打包方式会影响最终生成的文件类型和结构。
2、<properties>
元素是 Maven POM 文件中用于定义项目属性的部分。
在 <properties>
中,你可以定义一些变量,然后在 POM 文件的其他地方引用这些变量,以便在整个项目中统一管理一些配置信息。以下是一个简单的示例,展示了如何在 <properties>
中定义属性:
xml
<project>
<!-- 其他项目配置 -->
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 其他属性的定义 -->
</properties>
<!-- 其他项目配置 -->
</project>
3、<dependencies>
元素: 定义项目的依赖关系。
<dependency>
元素: 声明一个依赖,包含 <groupId>
、<artifactId>
、<version>
等元素。
<dependencyManagement>
元素是 Maven POM 文件中的一个重要部分,用于集中管理项目中所有模块的依赖版本信息。通过配置 <dependencyManagement>
包住的<dependencies>
,可以确保项目中的所有模块都使用相同版本的依赖,从而减少版本冲突的可能性。子项目可以通过继承父项目的 部分,自己的 pom 文件依赖版本号可以省略,从而使用父项目中定义的依赖版本。
4、<build>
元素: 定义项目的构建配置。
<plugins>
元素: 插件配置,例如 Maven Compiler 插件、Maven Surefire 插件等。
5、 <distributionManagement>
用于配置 Maven 构建输出的分发管理信息
它主要用于指定 Maven 构建结果的发布位置,包括发布到 Maven 仓库、远程仓库、FTP 服务器等。
以下是 <distributionManagement>
的一个简单示例:
xml
<project>
<!-- 其他项目配置 -->
<distributionManagement>
<repository>
<id>my-repo</id>
<url>https://example.com/maven-repo</url>
</repository>
<snapshotRepository>
<id>my-snapshot-repo</id>
<url>https://example.com/maven-snapshot-repo</url>
</snapshotRepository>
</distributionManagement>
<!-- 其他项目配置 -->
</project>
在上述示例中,<distributionManagement>
配置了两个部分:
<repository>
:用于发布正式版本(Release)。指定了 Maven 正式版本构建结果的发布位置,包括 id(标识符)和 url(发布的 URL)。正式版本和快照版本参考【maven】正式版本和快照版本详解
<snapshotRepository>
:用于发布快照版本(Snapshot)。类似于 <repository>
,但用于发布 Maven 快照版本。
这样配置后,当运行 mvn deploy
命令时,Maven 将会把构建结果发布到指定的仓库中。在实际项目中,根据实际需要,可以根据 <distributionManagement>
配置发布到不同的 Maven 仓库或其他存储位置。通常情况下我们的版本号带有后缀-SNAPSHOT
,发布的就是快照版本。在 pom.xml 文件中将项目的版本号修改为正式版本号,去掉 -SNAPSHOT
后缀, 接着遵循正式发布版本操作打标签等,再发布就是正式版本。
需要注意的是,<distributionManagement>
中的配置通常与 Maven 仓库管理工具(如 Nexus、Artifactory)等结合使用,以实现更灵活的构建发布管理。
6、其他配置: 还可以包含其他配置元素,
例如 <repositories>
(定义项目使用的远程仓库)、<properties>
(定义属性)、<profiles>
(定义不同环境的配置)等。和setting.xml 相似,具体可参考【maven】setting.xml文件详解。