跳到主要内容

pom.xml 文件主要内容

项目基本信息

pom.xml 文件中,项目的基本信息是通过以下元素来定义的:

  • modelVersion:指定 POM 模型的版本,通常设置为 4.0.0
  • groupIdartifactIdversion:这三个元素共同定义了项目的坐标,用于唯一标识一个项目。例如:
    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0.0</version>
  • name:项目的名称,便于识别和展示。
  • url:项目的主页 URL,指向项目的官方网站或代码仓库。
  • description:对项目的简要描述,帮助他人快速了解项目的目的和功能。

项目属性

项目属性允许在整个 pom.xml 文件中定义可复用的键值对。这些属性可以用于简化版本管理和配置。例如:

<properties>
<java.version>17</java.version>
<spring.boot.version>2.7.5</spring.boot.version>
</properties>

通过使用属性,可以在其他部分引用这些值,如:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring.boot.version}</version>
</dependency>

依赖管理

dependencyManagement 元素用于集中管理项目中所有可能使用的依赖及其版本。这确保了整个项目的一致性,避免了版本冲突。例如:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

模块

在多模块项目中,modules 元素列出了所有子模块的名称。这有助于 Maven 知道需要构建哪些模块。例如:

<modules>
<module>core</module>
<module>web</module>
<module>service</module>
</modules>

构建

build 元素定义了项目的构建配置,包括使用的插件和资源。例如:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>

仓库

repositoriespluginRepositories 元素定义了 Maven 获取依赖和插件的源。例如:

<repositories>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
</pluginRepository>
</pluginRepositories>

依赖

dependencies 元素列出了项目直接依赖的库。每个依赖通过 groupIdartifactIdversion 来指定。例如:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>

父项目

parent 元素定义了项目的父项目,从中继承某些配置。这在继承企业级配置或共享依赖时非常有用。例如:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>

配置

profiles 元素允许定义多个构建配置,根据不同的环境或需求选择不同的配置。例如:

<profiles>
<profile>
<id>development</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>production</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>

报告插件

reporting 元素定义了生成项目报告所需的插件。这有助于自动生成项目的文档和统计信息。例如:

<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.9.1</version>
</plugin>
</plugins>
</reporting>

分发管理

distributionManagement 元素定义了项目的发布配置,包括发布仓库和站点。例如:

<distributionManagement>
<repository>
<id>releases</id>
<url>https://repo.mycompany.com/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>https://repo.mycompany.com/snapshots</url>
</snapshotRepository>
</distributionManagement>

组织信息

organization 元素提供了有关项目所属组织的信息,包括组织的名称和 URL。例如:

<organization>
<name>Example Corp</name>
<url>https://www.example.com</url>
</organization>

开发者和贡献者

developerscontributors 元素列出了项目的主要开发者和其他贡献者。这有助于识别项目的维护者和参与者。例如:

<developers>
<developer>
<id>jdoe</id>
<name>John Doe</name>
<email>jdoe@example.com</email>
</developer>
</developers>
<contributors>
<contributor>
<name>Jane Smith</name>
<email>jsmith@example.com</email>
</contributor>
</contributors>

许可证

licenses 元素描述了项目的许可证信息,明确项目的使用和分发条款。例如:

<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>