SpringBoot中pom.xml配置詳解
簡(jiǎn)介
pom.xml是Maven項(xiàng)目的核心配置文件,用于管理項(xiàng)目的依賴(lài)、插件、構(gòu)建配置等。在Spring Boot項(xiàng)目中,pom.xml文件也扮演著重要的角色。在pom.xml文件中,可以配置項(xiàng)目的資源文件。 在Spring Boot的pom.xml文件中,通常會(huì)有一個(gè)標(biāo)簽文件,用于指定資源文件的路徑和名稱(chēng) 。
基本配置
1. project
元素是pom.xml文件的根元素,它包含了整個(gè)項(xiàng)目的配置信息。在元素下,可以定義一些子元素來(lái)配置項(xiàng)目的不同方面,如用于定義項(xiàng)目的依賴(lài)項(xiàng),用于定義項(xiàng)目的構(gòu)建配置,用于定義項(xiàng)目的屬性等。
通過(guò)配置元素和其子元素,可以實(shí)現(xiàn)對(duì)項(xiàng)目的各種配置和管理,使得項(xiàng)目在構(gòu)建和運(yùn)行時(shí)具備所需的依賴(lài)和配置。
#定義了 pom(4.0) 命名空間(xmlns) xmlns="http://maven.apache.org/POM/4.0.0" #創(chuàng)建了一個(gè) 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項(xiàng)目的pom.xml中,元素用于定義該項(xiàng)目的父依賴(lài),通常會(huì)指定為spring-boot-starter-parent。一個(gè)典型的配置如下:
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項(xiàng)目的groupId
- artifactId:spring-boot-starter-parent,一個(gè)特殊的啟動(dòng)器
- version: 具體的Spring Boot版本通過(guò)繼承這個(gè)父項(xiàng)目
Spring Boot項(xiàng)目可以獲得以下好處:
- 繼承Spring Boot的依賴(lài)管理(dependencyManagement元素)
- 獲得合理的默認(rèn)配置,如編譯級(jí)別、資源過(guò)濾等
- 使用Spring Boot提供的插件配置,如repackage插件
- 能夠使用常見(jiàn)的依賴(lài)版本,不需要顯式指定版本號(hào)
注意,并不會(huì)直接繼承依賴(lài),只是引入了依賴(lài)管理功能。我們?nèi)匀恍枰谥酗@式聲明需要的依賴(lài)。所以在SpringBoot項(xiàng)目中,使用spring-boot-starter-parent作為是標(biāo)準(zhǔn)做法,可以很好地管理項(xiàng)目的依賴(lài)。
3.artifactId
定義了名稱(chēng)的副本,與一起定義了一個(gè)Maven項(xiàng)目中某個(gè)模塊的坐標(biāo)。
在SpringBoot項(xiàng)目中,的值通常遵循以下規(guī)范:
項(xiàng)目模塊的名稱(chēng),比如core、web、config等
服務(wù)或應(yīng)用的名稱(chēng),比如user-service、e-commerce-app等
通用名稱(chēng),比如common、util等
另外,還會(huì)出現(xiàn)在依賴(lài)聲明中:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
4.groupId
在SpringBoot的pom.xml文件中,元素用于定義該項(xiàng)目隸屬的組織或團(tuán)體:出現(xiàn)在pom.xml文件的頂層元素中,它和一起定義了一個(gè)Maven項(xiàng)目中的模塊坐標(biāo)。通常與Java包命名類(lèi)似,采用分層的命名空間,例如:
<groupId>com.example.organization</groupId>
SpringBoot項(xiàng)目中的通常遵循一些規(guī)范:
- 公司/組織域名反轉(zhuǎn),如com.example- 項(xiàng)目名稱(chēng),如org.springframework.boot
- 功能模塊,如org.springframework.boot.autoconfigure
- 通用名稱(chēng),如org.example.common
另外,還會(huì)出現(xiàn)在依賴(lài)聲明中:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
5.version
在SpringBoot項(xiàng)目的pom.xml文件中,元素用于定義這個(gè)Maven項(xiàng)目的版本號(hào)。出現(xiàn)在pom.xml文件的頂層元素中,與和一起定義項(xiàng)目的坐標(biāo)。的格式通常為X.Y.Z,其中X是主版本號(hào),Y是次版本號(hào),Z是增量版本號(hào)。
例如:
<version>1.0.0</version>
對(duì)于SpringBoot項(xiàng)目,的定義通常遵循以下規(guī)范:- 使用語(yǔ)義化版本號(hào),如1.0.0
- 主版本號(hào):標(biāo)識(shí)項(xiàng)目重大版本
- 次版本號(hào):標(biāo)識(shí)新增功能
- 增量版本號(hào):標(biāo)識(shí)Bug修復(fù)另外,SNAPSHOT表示當(dāng)前為快照版本,還在開(kāi)發(fā)中。
在依賴(lài)管理中,Maven根據(jù)的值來(lái)區(qū)分不同版本的構(gòu)件。SpringBoot的依賴(lài)也會(huì)指定版本:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.3.1.RELEASE</version> </dependency>
6.properties
在SpringBoot項(xiàng)目的pom.xml文件中,元素用于定義Maven項(xiàng)目中可用的屬性。出現(xiàn)在pom.xml文件的頂層元素中,是一個(gè)容器標(biāo)簽。在其中可以定義多個(gè)來(lái)指定不同的屬性。例如:
<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties>
這為項(xiàng)目定義了java版本、項(xiàng)目構(gòu)建編碼和報(bào)告輸出編碼。SpringBoot項(xiàng)目的pom.xml通常會(huì)在中定義一些常用屬性,如:- Java版本
- 資源過(guò)濾屬性
- Encoding設(shè)置
- Spring Boot版本
- 其他通用屬性
這樣可以通過(guò)${propertyName}的形式在pom.xml中重用這些屬性值,避免重復(fù)書(shū)寫(xiě),提高可維護(hù)性。另外,子模塊可以覆蓋從父pom.xml繼承的屬性。所以SpringBoot項(xiàng)目中使用來(lái)定義可重用的Maven屬性是非常有用的實(shí)踐。它提高了pom.xml的配置效率。
7.dependencies
在SpringBoot項(xiàng)目的pom.xml文件中,元素用于聲明該項(xiàng)目的各種依賴(lài)。是pom.xml中的一個(gè)重要元素,Spring Boot項(xiàng)目的功能都是通過(guò)依賴(lài)來(lái)實(shí)現(xiàn)的。一個(gè)典型的示例如下:
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開(kāi)發(fā)的依賴(lài)
- mybatis-spring-boot-starter:MyBatis與Spring Boot集成的依賴(lài)
Spring Boot提供了眾多的啟動(dòng)器依賴(lài),可以通過(guò)組合啟動(dòng)器快速搭建項(xiàng)目。需要注意的是,并不是中的所有依賴(lài)都會(huì)實(shí)際被使用,它們可能用于提供依賴(lài)管理而不引入實(shí)際的依賴(lài) jar。
總之,SpringBoot項(xiàng)目主要通過(guò)來(lái)管理功能實(shí)現(xiàn)需要的各種依賴(lài)。合理選擇和聲明依賴(lài)對(duì)項(xiàng)目開(kāi)發(fā)非常重要。
8.dependencyManagement
在SpringBoot項(xiàng)目的pom.xml文件中,元素用于提供依賴(lài)的版本管理,它通常繼承自spring-boot-dependencies。在Spring Boot項(xiàng)目中,一個(gè)典型的配置如下:
<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導(dǎo)入依賴(lài)管理
- 不需要指定版本,繼承自Boot的依賴(lài)管理
使用的好處是:
- 控制依賴(lài)的版本,避免版本沖突
- 依賴(lài)版本可以集中管理
- 依賴(lài)版本不需要重復(fù)聲明
- 與Spring Boot依賴(lài)管理相兼容注意它只是聲明了版本管理,并不會(huì)引入實(shí)際的依賴(lài)。需要在中顯式聲明。
總之,通過(guò)可以很好地管理Spring Boot項(xiàng)目中的依賴(lài)版本,是標(biāo)準(zhǔn)的依賴(lài)管理方式。
9.build
在SpringBoot項(xiàng)目的pom.xml文件中,元素用于定義項(xiàng)目的構(gòu)建配置,主要包括插件和資源過(guò)濾等配置。出現(xiàn)在pom.xml的頂層元素中,是一個(gè)重要的構(gòu)建配置區(qū)。一個(gè)典型的示例:
<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插件
- 資源過(guò)濾配置:開(kāi)啟src/main/resources的資源過(guò)濾
SpringBoot項(xiàng)目通常需要的配置有:
- 編譯插件:maven-compiler-plugin
- 打包插件:spring-boot-maven-plugin
- 資源過(guò)濾配置
- 插件管理配置
合理利用可以控制Spring Boot項(xiàng)目的構(gòu)建過(guò)程,比如創(chuàng)建可執(zhí)行的Fat jar包等。是項(xiàng)目構(gòu)建的重要一環(huán)。
10.repositories
在SpringBoot項(xiàng)目的pom.xml文件中,元素用于配置該Maven項(xiàng)目需要訪問(wèn)的各種倉(cāng)庫(kù)地址。出現(xiàn)在pom.xml文件的頂層元素中,它包含一個(gè)或多個(gè)元素,每個(gè)元素指定一個(gè)倉(cāng)庫(kù)地址,例如:
<repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories>
這個(gè)配置添加了Spring Milestones倉(cāng)庫(kù)地址。SpringBoot項(xiàng)目中常見(jiàn)的倉(cāng)庫(kù)地址包括:
- Maven中央倉(cāng)庫(kù):默認(rèn)不需要配置
- Spring倉(cāng)庫(kù):包含Spring的發(fā)布版本和里程碑版本
- SpringSnapshot倉(cāng)庫(kù):包含Spring的快照版本
- 其他第三方庫(kù)倉(cāng)庫(kù)通過(guò)配置,Maven可以從這些倉(cāng)庫(kù)下載依賴(lài)的Jar文件。
注意企業(yè)級(jí)項(xiàng)目中,通常會(huì)搭建私有Nexus倉(cāng)庫(kù),并配置使用該私服地址。所以SpringBoot項(xiàng)目使用管理依賴(lài)倉(cāng)庫(kù)是非常常見(jiàn)和重要的實(shí)踐。它支持從多種渠道獲取依賴(lài)。
11.profiles
不同環(huán)境的配置文件,比如開(kāi)發(fā)、測(cè)試、生產(chǎn)環(huán)境。
在SpringBoot項(xiàng)目的pom.xml文件中,元素用于定義不同環(huán)境的構(gòu)建配置文件。包含一個(gè)或多個(gè)元素,每個(gè)指定了一個(gè)環(huán)境,例如:
<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兩個(gè)環(huán)境。通常一個(gè)profile可以指定:
- environment:執(zhí)行環(huán)境
- properties:不同的屬性配置
- dependencies:不同的依賴(lài)
- plugins:不同的插件配置
- resources:不同的資源
然后通過(guò)mvn命令使用參數(shù)"-Pprofile"激活不同環(huán)境的profile。這允許SpringBoot項(xiàng)目基于profile進(jìn)行多環(huán)境構(gòu)建。是實(shí)現(xiàn)不同環(huán)境隔離的重要方式。
12.pluginRepositories
插件倉(cāng)庫(kù)列表。
在SpringBoot項(xiàng)目的pom.xml文件中,元素用于配置訪問(wèn)Maven插件的倉(cāng)庫(kù)地址。與類(lèi)似,也包含多個(gè)子元素,例如:
<pluginRepositories> <pluginRepository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </pluginRepository> </pluginRepositories>
這個(gè)配置添加了一個(gè)Spring Milestones倉(cāng)庫(kù),用于下載Maven插件。它與的區(qū)別在于:
- :用于依賴(lài) jars 的倉(cāng)庫(kù)
- :用于插件 jars 的倉(cāng)庫(kù)
一般需要配置的插件倉(cāng)庫(kù)包括:
- Maven中央倉(cāng)庫(kù):默認(rèn)可用
- Spring Milestones/Snapshot倉(cāng)庫(kù):獲取Spring插件
- 其他第三方庫(kù)提供的插件倉(cāng)庫(kù)
通過(guò),Maven可以從配置的倉(cāng)庫(kù)地址下載并使用插件。
對(duì)于SpringBoot項(xiàng)目,如果使用了Spring提供的自定義插件,則需要配置對(duì)應(yīng)的Spring倉(cāng)庫(kù)地址,才能正確下載這些插件。所以它是啟用Maven插件所必需的配置。
13.name
項(xiàng)目名稱(chēng)。
14.description
項(xiàng)目簡(jiǎn)單描述。
15.packaging
在SpringBoot項(xiàng)目的pom.xml文件中,元素用于定義項(xiàng)目的打包方式。出現(xiàn)在pom.xml的頂層元素中,默認(rèn)為"jar"。對(duì)于SpringBoot項(xiàng)目,通常會(huì)設(shè)置為"jar",用于構(gòu)建一個(gè)可執(zhí)行的、包含所有依賴(lài)的Fat jar。例如:
<packaging>jar</packaging>
這會(huì)將SpringBoot應(yīng)用打包成一個(gè)運(yùn)行時(shí)可以直接執(zhí)行的jar包。其它可選的打包方式還包括:
- war:打包為一個(gè)Web應(yīng)用的war包文件
- ear:打包為一個(gè)Enterprise Archive(EAR)文件
SpringBoot也支持這兩種打包方式,但更常見(jiàn)的還是使用"jar"進(jìn)行打包。另外,如果要打成war包,則需要移除中對(duì)spring-boot-starter-tomcat的依賴(lài),而使用外置的Tomcat來(lái)運(yùn)行war包。
總之,使用元素指定"jar"是SpringBoot項(xiàng)目標(biāo)準(zhǔn)的做法,可以構(gòu)建出一個(gè)自包含、可執(zhí)行的jar包。
16.application
定義Spring Boot應(yīng)用入口類(lèi)名稱(chēng)。
17.url
項(xiàng)目主頁(yè)的URL, Maven產(chǎn)生的文檔用。
18.modules
在SpringBoot多模塊項(xiàng)目的pom.xml文件中,元素用于定義該項(xiàng)目包含的各個(gè)子模塊。出現(xiàn)在多模塊項(xiàng)目的頂層父pom.xml中,包含各個(gè)子模塊的名稱(chēng),例如:
<modules> <module>spring-boot-module-A</module> <module>spring-boot-module-B</module> </modules>
這個(gè)多模塊項(xiàng)目包含了兩個(gè)子模塊:
spring-boot-module-A
spring-boot-module-B
每個(gè)子模塊會(huì)有自己的pom.xml文件。使用的好處包括:
- 一鍵構(gòu)建整個(gè)項(xiàng)目
- 統(tǒng)一依賴(lài)管理和版本控制
- 代碼重用和優(yōu)化項(xiàng)目結(jié)構(gòu)
SpringBoot多模塊開(kāi)發(fā)是很常見(jiàn)的實(shí)踐,它有助于按功能或服務(wù)拆分工程,提高開(kāi)發(fā)效率和維護(hù)性。所以合理使用管理多模塊是SpringBoot項(xiàng)目中的重要配置。
寫(xiě)在最后
以上就是SpringBoot中pom.xml配置詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot pom.xml配置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Springboot2.0自適應(yīng)效果錯(cuò)誤響應(yīng)過(guò)程解析
這篇文章主要介紹了Springboot2.0自適應(yīng)效果錯(cuò)誤響應(yīng)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11淺談讓@Value更方便的Spring自定義轉(zhuǎn)換類(lèi)
Spring為大家內(nèi)置了不少開(kāi)箱即用的轉(zhuǎn)換類(lèi),如字符串轉(zhuǎn)數(shù)字、字符串轉(zhuǎn)時(shí)間等,但有時(shí)候需要使用自定義的屬性,則需要自定義轉(zhuǎn)換類(lèi)了2021-06-06IDEA遠(yuǎn)程管理docker鏡像及容器服務(wù)的實(shí)現(xiàn)
本文主要介紹了IDEA遠(yuǎn)程管理docker鏡像及容器服務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Java如何實(shí)現(xiàn)http接口參數(shù)和返回值加密
這篇文章主要介紹了Java如何實(shí)現(xiàn)http接口參數(shù)和返回值加密問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11mybatis和mybatis-plus同時(shí)使用的坑
本文主要介紹了mybatis和mybatis-plus同時(shí)使用的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Java實(shí)現(xiàn)簡(jiǎn)單通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07Spring AOP如何整合redis(注解方式)實(shí)現(xiàn)緩存統(tǒng)一管理詳解
這篇文章主要給大家介紹了關(guān)于Spring AOP如何整合redis(注解方式)實(shí)現(xiàn)緩存統(tǒng)一管理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08springboot依賴(lài)沖突問(wèn)題及解決過(guò)程
新搭了一個(gè)springboot 2.3.7.RELASE的框架,在集成mysql,tkMapper,mybatis的過(guò)程中,啟動(dòng)報(bào)錯(cuò),怎么解決這個(gè)問(wèn)題呢,下面小編給大家?guī)?lái)了springboot依賴(lài)沖突問(wèn)題及解決過(guò)程,一起看看吧2021-09-09JavaBean和Map轉(zhuǎn)換封裝類(lèi)的方法
下面小編就為大家?guī)?lái)一篇JavaBean和Map轉(zhuǎn)換封裝類(lèi)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10