SpringBoot中pom.xml配置详解

2a05095ad71af6fa57005ecec2f3ea7a.png

pom.xml是Maven项目的核心配置文件,用于管理项目的依赖、插件、构建配置等。在Spring Boot项目中,pom.xml文件也扮演着重要的角色。在pom.xml文件中,可以配置项目的资源文件。在Spring Boot的pom.xml文件中,通常会有一个<resources>标签文件,用于指定资源文件的路径和名称 。

74ba2d2614f3ceb742174e0a50dc3d90.jpeg

基本配置

1. project

<project>元素是pom.xml文件的根元素,它包含了整个项目的配置信息。在<project>元素下,可以定义一些子元素来配置项目的不同方面,如<dependencies>用于定义项目的依赖项,<build>用于定义项目的构建配置,<properties>用于定义项目的属性等。

通过配置<project>元素和其子元素,可以实现对项目的各种配置和管理,使得项目在构建和运行时具备所需的依赖和配置。

#定义了 pom(4.0) 命名空间(xmlns)
xmlns="http://maven.apache.org/POM/4.0.0"

#创建了一个 xsi 命名空间
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

#定义了 xsd 文件的位置,以便 XML 解析器解析 XML 文件
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd

2.parent

在SpringBoot项目的pom.xml中,<parent>元素用于定义该项目的父依赖,通常会指定为spring-boot-starter-parent。一个典型的<parent>配置如下:

xml
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>2.3.1.RELEASE</version>
</parent>

它指定了:

  • groupId:org.springframework.boot,Spring Boot项目的groupId

  • artifactId:spring-boot-starter-parent,一个特殊的启动器

  • version: 具体的Spring Boot版本通过继承这个父项目

Spring Boot项目可以获得以下好处:

  1. 继承Spring Boot的依赖管理(dependencyManagement元素)

  2. 获得合理的默认配置,如编译级别、资源过滤等

  3. 使用Spring Boot提供的插件配置,如repackage插件

  4. 能够使用常见的依赖版本,不需要显式指定版本号

注意,<parent>并不会直接继承依赖,只是引入了依赖管理功能。我们仍然需要在<dependencies>中显式声明需要的依赖。所以在SpringBoot项目中,使用spring-boot-starter-parent作为<parent>是标准做法,可以很好地管理项目的依赖。

3.artifactId

定义了名称的副本,与<groupId>一起定义了一个Maven项目中某个模块的坐标。

在SpringBoot项目中,<artifactId>的值通常遵循以下规范:

  • 项目模块的名称,比如core、web、config等

  • 服务或应用的名称,比如user-service、e-commerce-app等

  • 通用名称,比如common、util等

另外,<artifactId>还会出现在依赖声明中:

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

4.groupId

在SpringBoot的pom.xml文件中,<groupId>元素用于定义该项目隶属的组织或团体:<groupId>出现在pom.xml文件的顶层元素中,它和<artifactId>一起定义了一个Maven项目中的模块坐标。<groupId>通常与Java包命名类似,采用分层的命名空间,例如:

<groupId>com.example.organization</groupId>

SpringBoot项目中的<groupId>通常遵循一些规范:

  • 公司/组织域名反转,如com.example- 项目名称,如org.springframework.boot

  • 功能模块,如org.springframework.boot.autoconfigure

  • 通用名称,如org.example.common

另外,<groupId>还会出现在依赖声明中:

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

5.version

在SpringBoot项目的pom.xml文件中,<version>元素用于定义这个Maven项目的版本号。<version>出现在pom.xml文件的顶层元素中,与<groupId>和<artifactId>一起定义项目的坐标。<version>的格式通常为X.Y.Z,其中X是主版本号,Y是次版本号,Z是增量版本号。

例如:

<version>1.0.0</version>

对于SpringBoot项目,<version>的定义通常遵循以下规范:- 使用语义化版本号,如1.0.0

  • 主版本号:标识项目重大版本

  • 次版本号:标识新增功能

  • 增量版本号:标识Bug修复另外,SNAPSHOT表示当前为快照版本,还在开发中。

在依赖管理中,Maven根据<version>的值来区分不同版本的构件。SpringBoot的依赖也会指定版本:

<dependency>
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter</artifactId>
    <version>2.3.1.RELEASE</version>
</dependency>

6.properties

在SpringBoot项目的pom.xml文件中,<properties>元素用于定义Maven项目中可用的属性。<properties>出现在pom.xml文件的顶层元素中,是一个容器标签。在其中可以定义多个<property>来指定不同的属性。例如:

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

这为项目定义了java版本、项目构建编码和报告输出编码。SpringBoot项目的pom.xml通常会在<properties>中定义一些常用属性,如:- Java版本

  • 资源过滤属性

  • Encoding设置

  • Spring Boot版本

  • 其他通用属性

这样可以通过${propertyName}的形式在pom.xml中重用这些属性值,避免重复书写,提高可维护性。另外,子模块可以覆盖从父pom.xml继承的属性。所以SpringBoot项目中使用<properties>来定义可重用的Maven属性是非常有用的实践。它提高了pom.xml的配置效率。

7.dependencies

在SpringBoot项目的pom.xml文件中,<dependencies>元素用于声明该项目的各种依赖。<dependencies>是pom.xml中的一个重要元素,Spring Boot项目的功能都是通过依赖来实现的。一个典型的<dependencies>示例如下:

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

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.1</version>
    </dependency>
</dependencies>

它显示了:

  • spring-boot-starter-web:包含了web开发的依赖

  • mybatis-spring-boot-starter:MyBatis与Spring Boot集成的依赖

Spring Boot提供了众多的启动器依赖,可以通过组合启动器快速搭建项目。需要注意的是,并不是<dependencies>中的所有依赖都会实际被使用,它们可能用于提供依赖管理而不引入实际的依赖 jar。

总之,SpringBoot项目主要通过<dependencies>来管理功能实现需要的各种依赖。合理选择和声明依赖对项目开发非常重要。

8.dependencyManagement

在SpringBoot项目的pom.xml文件中,<dependencyManagement>元素用于提供依赖的版本管理,它通常继承自spring-boot-dependencies。在Spring Boot项目中,一个典型的<dependencyManagement>配置如下:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.3.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope> 
        </dependency>
    </dependencies>
</dependencyManagement>

它显示了:

  • 从spring-boot-dependencies导入依赖管理

  • 不需要指定版本,继承自Boot的依赖管理

使用<dependencyManagement>的好处是:

  • 控制依赖的版本,避免版本冲突

  • 依赖版本可以集中管理

  • 依赖版本不需要重复声明

  • 与Spring Boot依赖管理相兼容注意它只是声明了版本管理,并不会引入实际的依赖。需要在<dependencies>中显式声明。

总之,通过<dependencyManagement>可以很好地管理Spring Boot项目中的依赖版本,是标准的依赖管理方式。

935eea029dcbec7ca31a957c45be11dc.png

9.build

在SpringBoot项目的pom.xml文件中,<build>元素用于定义项目的构建配置,主要包括插件和资源过滤等配置。<build>出现在pom.xml的顶层元素中,是一个重要的构建配置区。一个典型的<build>示例:

<build>
  <plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
  
  <resources>
    <resource>
        <filtering>true</filtering> 
        <directory>src/main/resources</directory>
    </resource>
  </resources>
</build>

它显示了:

  • spring-boot-maven-plugin:Spring Boot的Maven插件

  • 资源过滤配置:开启src/main/resources的资源过滤

SpringBoot项目通常需要的<build>配置有:

  • 编译插件:maven-compiler-plugin

  • 打包插件:spring-boot-maven-plugin

  • 资源过滤配置

  • 插件管理配置

合理利用<build>可以控制Spring Boot项目的构建过程,比如创建可执行的Fat jar包等。是项目构建的重要一环。

10.repositories

在SpringBoot项目的pom.xml文件中,<repositories>元素用于配置该Maven项目需要访问的各种仓库地址。<repositories>出现在pom.xml文件的顶层元素中,它包含一个或多个<repository>元素,每个元素指定一个仓库地址,例如:

<repositories>
  <repository>
     <id>spring-milestones</id>
     <name>Spring Milestones</name>
     <url>https://repo.spring.io/milestone</url>
  </repository>
</repositories>

这个配置添加了Spring Milestones仓库地址。SpringBoot项目中常见的仓库地址包括:

  • Maven中央仓库:默认不需要配置

  • Spring仓库:包含Spring的发布版本和里程碑版本

  • SpringSnapshot仓库:包含Spring的快照版本

  • 其他第三方库仓库通过<repositories>配置,Maven可以从这些仓库下载依赖的Jar文件。

注意企业级项目中,通常会搭建私有Nexus仓库,并配置使用该私服地址。所以SpringBoot项目使用<repositories>管理依赖仓库是非常常见和重要的实践。它支持从多种渠道获取依赖。

11.profiles

不同环境的配置文件,比如开发、测试、生产环境。

在SpringBoot项目的pom.xml文件中,<profiles>元素用于定义不同环境的构建配置文件。<profiles>包含一个或多个<profile>元素,每个<profile>指定了一个环境,例如:

<profiles>
  <profile>
    <id>dev</id>
    <properties>
      <spring.profiles.active>dev</spring.profiles.active>
    </properties>
  </profile>
  
  <profile>  
    <id>prod</id> 
    <properties>
       <spring.profiles.active>prod</spring.profiles.active>
    </properties>
  </profile>
</profiles>

这里定义了dev和prod两个环境。通常一个profile可以指定:

  • environment:执行环境

  • properties:不同的属性配置

  • dependencies:不同的依赖

  • plugins:不同的插件配置

  • resources:不同的资源

然后通过mvn命令使用参数"-Pprofile"激活不同环境的profile。这允许SpringBoot项目基于profile进行多环境构建。是实现不同环境隔离的重要方式。

12.pluginRepositories

插件仓库列表。

在SpringBoot项目的pom.xml文件中,<pluginRepositories>元素用于配置访问Maven插件的仓库地址。<pluginRepositories>与<repositories>类似,也包含多个<pluginRepository>子元素,例如:

<pluginRepositories>
  <pluginRepository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
  </pluginRepository>  
</pluginRepositories>

这个配置添加了一个Spring Milestones仓库,用于下载Maven插件。它与<repositories>的区别在于:

  • <repositories>:用于依赖 jars 的仓库

  • <pluginRepositories>:用于插件 jars 的仓库

一般需要配置的插件仓库包括:

  • Maven中央仓库:默认可用

  • Spring Milestones/Snapshot仓库:获取Spring插件

  • 其他第三方库提供的插件仓库

通过<pluginRepositories>,Maven可以从配置的仓库地址下载并使用插件。

对于SpringBoot项目,如果使用了Spring提供的自定义插件,则需要配置对应的Spring仓库地址,才能正确下载这些插件。所以它是启用Maven插件所必需的配置。

607198fe337794ad19ce5a865610b0c9.jpeg

13.name

项目名称。

14.description

项目简单描述。

15.packaging

在SpringBoot项目的pom.xml文件中,<packaging>元素用于定义项目的打包方式。<packaging>出现在pom.xml的顶层元素中,默认为"jar"。对于SpringBoot项目,通常会设置为"jar",用于构建一个可执行的、包含所有依赖的Fat jar。例如:

<packaging>jar</packaging>

这会将SpringBoot应用打包成一个运行时可以直接执行的jar包。其它可选的打包方式还包括:

  • war:打包为一个Web应用的war包文件

  • ear:打包为一个Enterprise Archive(EAR)文件

SpringBoot也支持这两种打包方式,但更常见的还是使用"jar"进行打包。另外,如果要打成war包,则需要移除<dependency>中对spring-boot-starter-tomcat的依赖,而使用外置的Tomcat来运行war包。

总之,使用<packaging>元素指定"jar"是SpringBoot项目标准的做法,可以构建出一个自包含、可执行的jar包。

16.application

定义Spring Boot应用入口类名称。

17.url

项目主页的URL, Maven产生的文档用。

<url>http://maven.apache.org</url>

18.modules

在SpringBoot多模块项目的pom.xml文件中,<modules>元素用于定义该项目包含的各个子模块。<modules>出现在多模块项目的顶层父pom.xml中,包含各个子模块的名称,例如:

<modules>
  <module>spring-boot-module-A</module>
  <module>spring-boot-module-B</module>
</modules>

这个多模块项目包含了两个子模块:

  • spring-boot-module-A

  • spring-boot-module-B

每个子模块会有自己的pom.xml文件。使用<modules>的好处包括:

  • 一键构建整个项目

  • 统一依赖管理和版本控制

  • 代码重用和优化项目结构

SpringBoot多模块开发是很常见的实践,它有助于按功能或服务拆分工程,提高开发效率和维护性。所以合理使用<modules>管理多模块是SpringBoot项目中的重要配置。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[8\]:pom.xml文件详解pom.xml文件是Maven项目的核心配置文件,用于管理项目的依赖、插件、构建配置等。在Spring Boot项目pom.xml文件也扮演着重要的角色。在pom.xml文件,可以配置项目的资源文件。 在Spring Bootpom.xml文件,通常会有一个<resources>标签,用于配置项目的资源文件。资源文件可以包括静态文件、配置文件等。在<resources>标签,可以使用<resource>标签来指定资源文件的路径和过滤规则。 例如,可以使用以下配置来指定资源文件的路径和过滤规则: ```xml <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> ``` 上述配置,<directory>标签指定了资源文件的路径为src/main/resources,<includes>标签指定了需要包含的资源文件的过滤规则。在这个例子,所有的.properties和.xml文件都会被包含在项目的资源文件。 通过配置pom.xml文件的<resources>标签,可以方便地管理项目的资源文件,使其能够在项目正确地被加载和使用。 #### 引用[.reference_title] - *1* *3* [SpringBoot入门pom.xml文件详解,Resources目录结构详解Springboot创建项目,注解详解等等,博主为很少人](https://blog.csdn.net/m0_52789121/article/details/124038257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [SpringBoot入门pom.xml文件详解,Resources目录结构详解Springboot创建项目,注解详解等等,博主为很少人...](https://blog.csdn.net/qq_38101814/article/details/91044906)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值