Spring Boot项目pom.xml配置详解 -- 知识铺
🔔简介
pom.xml是Maven项目的核心配置文件,用于管理项目的依赖、插件、构建配置等。在Spring Boot项目中,pom.xml文件也扮演着重要的角色。在pom.xml文件中,可以配置项目的资源文件。 在Spring Boot的pom.xml文件中,通常会有一个
🔔基本配置
🌵1. project
通过配置
<span role="presentation">#定义了 pom(4.0) 命名空间(xmlns)</span><br><span role="presentation">xmlns="http://maven.apache.org/POM/4.0.0"</span><br><span role="presentation"><span cm-text=""></span></span><br><span role="presentation">#创建了一个 xsi 命名空间</span><br><span role="presentation">xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</span><br><span role="presentation"><span cm-text=""></span></span><br><span role="presentation">#定义了 xsd 文件的位置,以便 XML 解析器解析 XML 文件</span><br><span role="presentation">xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd</span>
🌵2.parent
在SpringBoot项目的pom.xml中,
<span role="presentation">xml</span><br><span role="presentation"><parent></span><br><span role="presentation"> <groupId>org.springframework.boot</groupId></span><br><span role="presentation"> <artifactId>spring-boot-starter-parent</artifactId> </span><br><span role="presentation"> <version>2.3.1.RELEASE</version></span><br><span role="presentation"></parent></span>
它指定了:
-
groupId:org.springframework.boot,Spring Boot项目的groupId
-
artifactId:spring-boot-starter-parent,一个特殊的启动器
-
version: 具体的Spring Boot版本通过继承这个父项目
Spring Boot项目可以获得以下好处:
-
继承Spring Boot的依赖管理(dependencyManagement元素)
-
获得合理的默认配置,如编译级别、资源过滤等
-
使用Spring Boot提供的插件配置,如repackage插件
-
能够使用常见的依赖版本,不需要显式指定版本号
注意,
🌵3.artifactId
定义了名称的副本,与
在SpringBoot项目中,
-
项目模块的名称,比如core、web、config等
-
服务或应用的名称,比如user-service、e-commerce-app等
-
通用名称,比如common、util等
另外,
<span role="presentation"><dependency></span><br><span role="presentation"> <groupId>org.springframework.boot</groupId></span><br><span role="presentation"> <artifactId>spring-boot-starter-web</artifactId></span><br><span role="presentation"></dependency></span>
🌵4.groupId
在SpringBoot的pom.xml文件中,
<span role="presentation"><groupId>com.example.organization</groupId></span>
SpringBoot项目中的
-
公司/组织域名反转,如com.example- 项目名称,如org.springframework.boot
-
功能模块,如org.springframework.boot.autoconfigure
-
通用名称,如org.example.common
另外,
<span role="presentation"><dependency></span><br><span role="presentation"> <groupId>org.springframework.boot</groupId></span><br><span role="presentation"> <artifactId>spring-boot-starter-web</artifactId></span><br><span role="presentation"></dependency></span>
🌵5.version
在SpringBoot项目的pom.xml文件中,
例如:
<span role="presentation"><version>1.0.0</version></span>
对于SpringBoot项目,
-
主版本号:标识项目重大版本
-
次版本号:标识新增功能
-
增量版本号:标识Bug修复另外,SNAPSHOT表示当前为快照版本,还在开发中。
在依赖管理中,Maven根据
<span role="presentation"><dependency></span><br><span role="presentation"> <groupId>org.springframework.boot</groupId> </span><br><span role="presentation"> <artifactId>spring-boot-starter</artifactId></span><br><span role="presentation"> <version>2.3.1.RELEASE</version></span><br><span role="presentation"></dependency></span>
🌵6.properties
在SpringBoot项目的pom.xml文件中,
<span role="presentation"><properties></span><br><span role="presentation"> <java.version>1.8</java.version></span><br><span role="presentation"> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></span><br><span role="presentation"> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></span><br><span role="presentation"></properties></span>
这为项目定义了java版本、项目构建编码和报告输出编码。SpringBoot项目的pom.xml通常会在
-
资源过滤属性
-
Encoding设置
-
Spring Boot版本
-
其他通用属性
这样可以通过${propertyName}的形式在pom.xml中重用这些属性值,避免重复书写,提高可维护性。另外,子模块可以覆盖从父pom.xml继承的属性。所以SpringBoot项目中使用
🌵7.dependencies
在SpringBoot项目的pom.xml文件中,
xml<br><dependencies><br> <dependency><br> <groupId>org.springframework.boot</groupId><br> <artifactId>spring-boot-starter-web</artifactId><br> </dependency><br><br> <dependency><br> <groupId>org.mybatis.spring.boot</groupId><br> <artifactId>mybatis-spring-boot-starter</artifactId><br> <version>2.1.1</version><br> </dependency><br></dependencies>
它显示了:
-
spring-boot-starter-web:包含了web开发的依赖
-
mybatis-spring-boot-starter:MyBatis与Spring Boot集成的依赖
Spring Boot提供了众多的启动器依赖,可以通过组合启动器快速搭建项目。需要注意的是,并不是
总之,SpringBoot项目主要通过
🌵8.dependencyManagement
在SpringBoot项目的pom.xml文件中,
<dependencyManagement><br> <dependencies><br> <dependency><br> <groupId>org.springframework.boot</groupId><br> <artifactId>spring-boot-dependencies</artifactId><br> <version>2.3.1.RELEASE</version><br> <type>pom</type><br> <scope>import</scope> <br> </dependency><br> </dependencies><br></dependencyManagement>
它显示了:
-
从spring-boot-dependencies导入依赖管理
-
不需要指定版本,继承自Boot的依赖管理
使用
-
控制依赖的版本,避免版本冲突
-
依赖版本可以集中管理
-
依赖版本不需要重复声明
-
与Spring Boot依赖管理相兼容注意它只是声明了版本管理,并不会引入实际的依赖。需要在
中显式声明。
总之,通过
🌵9.build
在SpringBoot项目的pom.xml文件中,
<build><br> <plugins><br> <plugin><br> <groupId>org.springframework.boot</groupId><br> <artifactId>spring-boot-maven-plugin</artifactId><br> </plugin><br> </plugins><br> <br> <resources><br> <resource><br> <filtering>true</filtering> <br> <directory>src/main/resources</directory><br> </resource><br> </resources><br></build>
它显示了:
-
spring-boot-maven-plugin:Spring Boot的Maven插件
-
资源过滤配置:开启src/main/resources的资源过滤
SpringBoot项目通常需要的
-
编译插件:maven-compiler-plugin
-
打包插件:spring-boot-maven-plugin
-
资源过滤配置
-
插件管理配置
合理利用
🌵10.repositories
在SpringBoot项目的pom.xml文件中,
<repositories><br> <repository><br> <id>spring-milestones</id><br> <name>Spring Milestones</name><br> <url>https://repo.spring.io/milestone</url><br> </repository><br></repositories>
这个配置添加了Spring Milestones仓库地址。SpringBoot项目中常见的仓库地址包括:
-
Maven中央仓库:默认不需要配置
-
Spring仓库:包含Spring的发布版本和里程碑版本
-
SpringSnapshot仓库:包含Spring的快照版本
-
其他第三方库仓库通过
配置,Maven可以从这些仓库下载依赖的Jar文件。
注意企业级项目中,通常会搭建私有Nexus仓库,并配置使用该私服地址。所以SpringBoot项目使用
🌵11.profiles
不同环境的配置文件,比如开发、测试、生产环境。
在SpringBoot项目的pom.xml文件中,
<profiles><br> <profile><br> <id>dev</id><br> <properties><br> <spring.profiles.active>dev</spring.profiles.active><br> </properties><br> </profile><br> <br> <profile> <br> <id>prod</id> <br> <properties><br> <spring.profiles.active>prod</spring.profiles.active><br> </properties><br> </profile><br></profiles>
这里定义了dev和prod两个环境。通常一个profile可以指定:
-
environment:执行环境
-
properties:不同的属性配置
-
dependencies:不同的依赖
-
plugins:不同的插件配置
-
resources:不同的资源
然后通过mvn命令使用参数"-Pprofile"激活不同环境的profile。这允许SpringBoot项目基于profile进行多环境构建。是实现不同环境隔离的重要方式。
🌵12.pluginRepositories
插件仓库列表。
在SpringBoot项目的pom.xml文件中,
<pluginRepositories><br> <pluginRepository><br> <id>spring-milestones</id><br> <name>Spring Milestones</name><br> <url>https://repo.spring.io/milestone</url><br> </pluginRepository> <br></pluginRepositories>
这个配置添加了一个Spring Milestones仓库,用于下载Maven插件。它与
-
:用于依赖 jars 的仓库 -
:用于插件 jars 的仓库
一般需要配置的插件仓库包括:
-
Maven中央仓库:默认可用
-
Spring Milestones/Snapshot仓库:获取Spring插件
-
其他第三方库提供的插件仓库
通过
对于SpringBoot项目,如果使用了Spring提供的自定义插件,则需要配置对应的Spring仓库地址,才能正确下载这些插件。所以它是启用Maven插件所必需的配置。
🌵13.name
项目名称。
🌵14.description
项目简单描述。
🌵15.packaging
在SpringBoot项目的pom.xml文件中,
<packaging>jar</packaging>
这会将SpringBoot应用打包成一个运行时可以直接执行的jar包。其它可选的打包方式还包括:
-
war:打包为一个Web应用的war包文件
-
ear:打包为一个Enterprise Archive(EAR)文件
SpringBoot也支持这两种打包方式,但更常见的还是使用"jar"进行打包。另外,如果要打成war包,则需要移除
总之,使用
🌵16.application
定义Spring Boot应用入口类名称。
🌵17.url
项目主页的URL, Maven产生的文档用。
🌵18.modules
在SpringBoot多模块项目的pom.xml文件中,
<modules><br> <module>spring-boot-module-A</module><br> <module>spring-boot-module-B</module><br></modules>
这个多模块项目包含了两个子模块:
-
spring-boot-module-A
-
spring-boot-module-B
每个子模块会有自己的pom.xml文件。使用
-
一键构建整个项目
-
统一依赖管理和版本控制
-
代码重用和优化项目结构
SpringBoot多模块开发是很常见的实践,它有助于按功能或服务拆分工程,提高开发效率和维护性。所以合理使用
🔔写在最后
如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240424/Spring-Boot%E9%A1%B9%E7%9B%AEpom.xml%E9%85%8D%E7%BD%AE%E8%AF%A6%E8%A7%A3--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com