国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot多模塊項(xiàng)目的創(chuàng)建和配置(Maven工程多模塊)

這篇具有很好參考價(jià)值的文章主要介紹了Spring Boot多模塊項(xiàng)目的創(chuàng)建和配置(Maven工程多模塊)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在進(jìn)行分布式系統(tǒng)開發(fā)時(shí),我們通常會(huì)創(chuàng)建多個(gè)模塊的工程項(xiàng)目。即每一個(gè)功能就是一個(gè)Spring Boot工程,作為一個(gè)個(gè)模塊,然后這些模塊都會(huì)有一個(gè)父模塊,父模塊通常沒有代碼只有一個(gè)pom.xml

今天就來分享一下Spring Boot如何創(chuàng)建一個(gè)多模塊項(xiàng)目,以創(chuàng)建一個(gè)兩個(gè)子模塊的工程為例。

1,創(chuàng)建父模塊

在IDEA中,創(chuàng)建一個(gè)Spring Boot項(xiàng)目,但是不勾選任何依賴:

springboot新建module,java,spring boot,maven,java

springboot新建module,java,spring boot,maven,java

創(chuàng)建好之后,將父模塊中除了pom.xml文件之外的全部文件刪除:

springboot新建module,java,spring boot,maven,java

因?yàn)楦改K只是做一個(gè)模塊和依賴管理的作用,因此不需要代碼。

然后修改這個(gè)父模塊的pom.xml文件,首先把<dependencies>節(jié)點(diǎn)、<build>節(jié)點(diǎn)和<properties>全部刪除:

springboot新建module,java,spring boot,maven,java

然后修改版本號(hào)為自己定義的(方便后續(xù)子模塊指定父模塊):

springboot新建module,java,spring boot,maven,java

然后修改父模塊打包方式為pom,在其中加入如下語句即可:

xml復(fù)制代碼<packaging>pom</packaging>

springboot新建module,java,spring boot,maven,java

好的,到這里父模塊修改就完成了!

2,創(chuàng)建子模塊并繼承父模塊

在左邊項(xiàng)目樹中父模塊位置右鍵新建Spring Boot工程:

springboot新建module,java,spring boot,maven,java

springboot新建module,java,spring boot,maven,java

springboot新建module,java,spring boot,maven,java

然后把子模塊不需要的文件也刪掉(只留pom.xmlsrc文件夾):

springboot新建module,java,spring boot,maven,java

修改該子模塊的pom.xml文件,首先把子模塊<parent>中的工件坐標(biāo)改成和上述父模塊一致:

springboot新建module,java,spring boot,maven,java

springboot新建module,java,spring boot,maven,java

然后刪除子模塊的<groupId>節(jié)點(diǎn),因?yàn)橥ǔW幽K繼承父模塊,子模塊的組id是和父模塊的一致的:

springboot新建module,java,spring boot,maven,java

ok,到此子模塊創(chuàng)建并配置完成!此時(shí)這個(gè)子模塊(工件名module-one)就繼承了剛剛的父模塊。

然后以這個(gè)步驟再創(chuàng)建一個(gè)子模塊module-two

springboot新建module,java,spring boot,maven,java

最后整個(gè)工程就創(chuàng)建完成了!總共兩個(gè)子模塊。

3,在父模塊中指定子模塊

回到父模塊的pom.xml文件,添加<modules>節(jié)點(diǎn),在其中加入<module>節(jié)點(diǎn)以指定子模塊:

springboot新建module,java,spring boot,maven,java

需要注意的是,<module>節(jié)點(diǎn)中的內(nèi)容是子模塊工程的文件夾名!所以通常規(guī)范起見子模塊工程的文件夾名通常和它的組件名一致。

springboot新建module,java,spring boot,maven,java

然后在父模塊文件夾中執(zhí)行mvn clean package試試:

springboot新建module,java,spring boot,maven,java

可以看見構(gòu)建打包成功,以及每個(gè)模塊的構(gòu)建時(shí)間。

到此,多模塊項(xiàng)目就創(chuàng)建完成了!

4,子模塊之間的互相引用

在多模塊項(xiàng)目中,子模塊的互相引用也很方便。

比如說上述module-one要調(diào)用module-two中的類,就直接把module-two的工件坐標(biāo)加入到module-onepom.xml的依賴部分即可!

springboot新建module,java,spring boot,maven,java

更新一下Maven工程,就可以在module-one中調(diào)用module-two的類了!

不過這個(gè)時(shí)候運(yùn)行工程是沒有任何問題的,但是打包會(huì)出錯(cuò):雖然module-one依賴了module-two,但是仍然會(huì)在打包module-one的時(shí)候,提示找不到module-two中的類。

springboot新建module,java,spring boot,maven,java

這是由于Spring Boot打包的模式問題,我們打開被依賴模塊module-two的pom.xml文件找到最下面<build>節(jié)點(diǎn)中,在spring-boot-maven-plugin插件部分中加入下面配置:

xml復(fù)制代碼<classifier>exec</classifier>

最終如下:

springboot新建module,java,spring boot,maven,java

這個(gè)時(shí)候?qū)Ω改K打包,就成功了!

springboot新建module,java,spring boot,maven,java

5,再看parent和modules標(biāo)簽

在上述無論是子模塊繼承父模塊還是父模塊中聲明子模塊,主要就是用到了parent標(biāo)簽和modules標(biāo)簽。那么這里有一個(gè)疑問了:既然子項(xiàng)目使用了parent指定父項(xiàng)目,那父項(xiàng)目中為什么還需使用modules指定子項(xiàng)目?這么做是否有些冗余?

事實(shí)上,這兩個(gè)標(biāo)簽不僅僅是指定關(guān)系,還有著其它不同的作用。

(1) parent標(biāo)簽

parent標(biāo)簽就是用于聲明該子模塊的父模塊了!也就是說,一個(gè)子模塊要繼承父模塊,只需在parent中聲明父模塊的工件坐標(biāo)即可。

當(dāng)多個(gè)子模塊繼承了同一個(gè)父模塊時(shí):

  • 它們都會(huì)繼承父模塊中的依賴、插件、屬性等等
  • 這些子模塊之間也可以相互引用

在上述例子中,我們的子模塊文件夾和父模塊pom.xml在同一目錄下,如果不在同一目錄呢?那還需要在子模塊的parent中使用relativePath來指定父模塊的pom.xml的相對(duì)路徑。

例如現(xiàn)在父項(xiàng)目的pom.xml文件不在子項(xiàng)目的上一級(jí)目錄中,而是在子項(xiàng)目的上兩級(jí)目錄中,你可以將relativePath設(shè)置為../../pom.xml如下:

xml復(fù)制代碼<parent>
	<groupId>com.gitee.swsk33</groupId>
	<artifactId>total-module</artifactId>
	<version>1.0.0</version>
	<!-- 指定父項(xiàng)目pom.xml位置 -->
	<relativePath>../../pom.xml</relativePath>
</parent>

注意,relativePath中指定的是相對(duì)路徑,并且是父模塊pom.xml相對(duì)于該子模塊pom.xml文件的路徑

(2) modules標(biāo)簽

當(dāng)你現(xiàn)在需要構(gòu)建父項(xiàng)目,比如在父項(xiàng)目的根目錄下執(zhí)行構(gòu)建命令(如mvn clean install)時(shí),所有繼承了該父項(xiàng)目的子模塊都會(huì)被構(gòu)建嗎?顯然不是的。

只有聲明在父項(xiàng)目的modules中的子模塊,才會(huì)被構(gòu)建。

想必現(xiàn)在大家知道了兩者的區(qū)別了,parent聲明繼承,主要是繼承屬性、依賴等等父項(xiàng)目的屬性,而父項(xiàng)目中的modules是指定哪些子模塊會(huì)隨著該父模塊一起被構(gòu)建。

所以如果你的項(xiàng)目中有的用于測試的子項(xiàng)目需要繼承父項(xiàng)目,但是又不希望這些用于測試的模塊被構(gòu)建,你就可以不在父項(xiàng)目中的modules中聲明它們。

6,依賴管理

多模塊項(xiàng)目中模塊變多了,依賴管理不當(dāng)也會(huì)導(dǎo)致很多莫名其妙的問題。但是如果對(duì)每個(gè)模塊分別管理依賴及其版本,會(huì)相當(dāng)麻煩。

(1) 共用的依賴

假設(shè)上述module-onemodule-two都需要依賴fastjson2,我們平常并不會(huì)依次在module-onemodule-two中分別單獨(dú)加入其依賴,而是直接在父模塊pom.xml中指定,和平時(shí)一樣,在父模塊的pom.xmldependencis節(jié)點(diǎn)中加入即可:

springboot新建module,java,spring boot,maven,java

這樣,子模塊中即使是不加入fastjson2依賴,也可以使用這個(gè)庫了!因?yàn)樽幽K除了可以使用自己的依賴之外,還會(huì)向上查找父模塊的依賴,也就是說,父模塊的依賴是向下繼承的,因此對(duì)于所有模塊都要使用的依賴,我們可以寫在父模塊中。

所以,兩個(gè)模塊都依賴于Spring Web話,也可以將兩個(gè)模塊的Spring Web依賴移至父模塊。

所以說父模塊和子模塊中,依賴也有著繼承的關(guān)系!事實(shí)上,父模塊的properties也是向下繼承的。

(2) 依賴版本管理

假如現(xiàn)在module-one依賴于okhttps4.0.0版本,而module-two依賴于commons-io2.11.0版本,顯然這時(shí)我們不適合再在父模塊中加入了,還是各自加入對(duì)應(yīng)依賴。

springboot新建module,java,spring boot,maven,java

目前因?yàn)橹挥袃蓚€(gè)模塊,這么做看起來很合理。但是假設(shè)現(xiàn)在又多了module-three,module-four等等,它們也是分別依賴于okhttpscommons-io,那么我們又要分別在這兩個(gè)模塊中分別單獨(dú)加入依賴。

摸塊 依賴
module-onemodule-three okhttps
module-twomodule-four commons-io

可能一開始沒有問題,但是后面模塊依賴版本需要更新,但是一個(gè)個(gè)地更新難免會(huì)有疏漏,導(dǎo)致部分模塊雖然依賴一樣但是版本不一致,最后整個(gè)系統(tǒng)也出現(xiàn)了莫名其妙地錯(cuò)誤,還難以排查。

就假設(shè)后面你把module-oneokhttps更新到了4.0.1版本,但是module-threeokhttps仍然是4.0.0版本,這樣整個(gè)系統(tǒng)就可能出現(xiàn)問題甚至無法啟動(dòng)。

尤其是模塊變成十幾個(gè)甚至上百個(gè)了,一個(gè)個(gè)地手動(dòng)修改是幾乎不可能的,要如何讓每個(gè)模塊使用的依賴版本統(tǒng)一呢?

這時(shí),我們就要借助dependencyManagement標(biāo)簽了!

dependencyManagement用于管理依賴的版本,我們?cè)诟改K的pom.xml加入這個(gè)標(biāo)簽:

xml復(fù)制代碼<dependencyManagement>
   <dependencies>
      <dependency>
         <groupId>cn.zhxu</groupId>
         <artifactId>okhttps</artifactId>
         <version>4.0.0</version>
      </dependency>

      <dependency>
         <groupId>commons-io</groupId>
         <artifactId>commons-io</artifactId>
         <version>2.11.0</version>
      </dependency>
   </dependencies>
</dependencyManagement>

然后,在子模塊中,就可以把對(duì)應(yīng)的依賴版本去掉了!

springboot新建module,java,spring boot,maven,java

可見這里,子模塊中只需要引入對(duì)應(yīng)依賴,而不需要指定版本了!因?yàn)?strong>子模塊會(huì)向上查找父模塊中dependencyManagement標(biāo)簽中對(duì)應(yīng)依賴的版本。

這樣,就起到了統(tǒng)一管理版本的作用,只需要在父模塊的dependencyManagement中修改對(duì)應(yīng)依賴版本,子模塊中對(duì)應(yīng)依賴都會(huì)相應(yīng)地使用這個(gè)版本。

dependencyManagement的注意事項(xiàng):

  • dependencyManagement僅用于管理版本,而不會(huì)為自己以及子模塊導(dǎo)入依賴,因此在dependencyManagement中聲明依賴后,對(duì)應(yīng)的子模塊仍然需要在dependencies中加入依賴
  • pom.xmldependencyManagementdependencies同級(jí),并且dependencyManagement中也需要有一個(gè)dependencies
  • dependencyManagement不僅可以管理子模塊的依賴版本,也可以管理自身的依賴版本
  • 若不想讓某個(gè)子模塊使用父模塊dependencyManagement的版本,那就在這個(gè)子模塊的dependencies中聲明對(duì)應(yīng)版本

(3) 總結(jié)

總而言之,對(duì)于所有子模塊都共用的依賴,我們只需在父模塊的dependencies中引入這個(gè)依賴即可,而不需要再在子模塊pom.xml中引入。

而對(duì)于不是所有子模塊都需要的依賴,而是部分子模塊需要的,又要統(tǒng)一版本管理,這時(shí)除了在需要這個(gè)依賴的子模塊中引入依賴之外,還需要在父模塊中的dependencyManagement聲明這個(gè)依賴及其版本,這時(shí),可以去掉子模塊中對(duì)應(yīng)依賴的版本號(hào),使其遵循父模塊中聲明的版本。

示例倉庫地址:文章來源地址http://www.zghlxwxcb.cn/news/detail-655279.html

  • 簡單多模塊項(xiàng)目
  • 統(tǒng)一依賴管理的多模塊項(xiàng)目

到了這里,關(guān)于Spring Boot多模塊項(xiàng)目的創(chuàng)建和配置(Maven工程多模塊)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • spring boot3單模塊項(xiàng)目工程搭建-上(個(gè)人開發(fā)模板)

    spring boot3單模塊項(xiàng)目工程搭建-上(個(gè)人開發(fā)模板)

    ? ??個(gè)人主頁:? ? ?蒾酒 ??系列專欄 :《spring boot實(shí)戰(zhàn)》 目錄 寫在前面 上文銜接 常規(guī)目錄創(chuàng)建 common目錄 exception.handle目錄 result.handle目錄 controller目錄 service目錄 mapper目錄 entity目錄 test目錄 寫在最后 本文介紹了springboot開發(fā)后端服務(wù),單模塊項(xiàng)目工程搭建。單模塊搭建出

    2024年04月29日
    瀏覽(21)
  • Java 版 spring cloud + spring boot 工程系統(tǒng)管理 工程項(xiàng)目管理系統(tǒng)源碼 工程項(xiàng)目各模塊及其功能點(diǎn)清單

    Java 版 spring cloud + spring boot 工程系統(tǒng)管理 工程項(xiàng)目管理系統(tǒng)源碼 工程項(xiàng)目各模塊及其功能點(diǎn)清單

    ???????工程項(xiàng)目各模塊及其功能點(diǎn)清單 一、系統(tǒng)管理 ? ? 1、數(shù)據(jù)字典:實(shí)現(xiàn)對(duì)數(shù)據(jù)字典標(biāo)簽的增刪改查操作 ? ? 2、編碼管理:實(shí)現(xiàn)對(duì)系統(tǒng)編碼的增刪改查操作 ? ? 3、用戶管理:管理和查看用戶角色 ? ? 4、菜單管理:實(shí)現(xiàn)對(duì)系統(tǒng)菜單的增刪改查操作 ? ? 5、角色管理:

    2024年02月14日
    瀏覽(24)
  • SpringBoot 插件 spring-boot-maven-plugin 原理,以及SpringBoo工程部署的 jar 包瘦身實(shí)戰(zhàn)

    SpringBoot 插件 spring-boot-maven-plugin 原理,以及SpringBoo工程部署的 jar 包瘦身實(shí)戰(zhàn)

    我們直接使用 maven package (maven自帶的package打包功能),打包Jar包的時(shí)候,不會(huì)將該項(xiàng)目所依賴的Jar包一起打進(jìn)去,在使用 java -jar 命令啟動(dòng)項(xiàng)目時(shí)會(huì)報(bào)錯(cuò),項(xiàng)目無法正常啟動(dòng)。這個(gè)時(shí)候,我們就可以考慮引用 spring-boot-maven-plugin 插件來為項(xiàng)目打Jar包。 maven項(xiàng)目的pom.xml中,添

    2024年02月06日
    瀏覽(24)
  • 2. 使用IDEA創(chuàng)建Spring Boot Hello項(xiàng)目并管理依賴——Maven入門指南

    2. 使用IDEA創(chuàng)建Spring Boot Hello項(xiàng)目并管理依賴——Maven入門指南

    前言:本文將介紹如何使用IDEA創(chuàng)建一個(gè)Spring Boot Hello項(xiàng)目,并通過Maven來管理項(xiàng)目的依賴。我們從項(xiàng)目的創(chuàng)建到代碼的編寫,再到項(xiàng)目的構(gòu)建和運(yùn)行,一步步演示了整個(gè)過程。 ?? 作者簡介:作為某云服務(wù)提供商的后端開發(fā)人員,我將在這里與大家簡要分享一些實(shí)用的開發(fā)小

    2024年02月10日
    瀏覽(25)
  • Java版企業(yè)工程項(xiàng)目管理系統(tǒng)源碼+java版本+項(xiàng)目模塊功能清單+spring cloud +spring boot

    Java版企業(yè)工程項(xiàng)目管理系統(tǒng)源碼+java版本+項(xiàng)目模塊功能清單+spring cloud +spring boot

    ??????工程項(xiàng)目各模塊及其功能點(diǎn)清單 一、系統(tǒng)管理 ? ? 1、數(shù)據(jù)字典:實(shí)現(xiàn)對(duì)數(shù)據(jù)字典標(biāo)簽的增刪改查操作 ? ? 2、編碼管理:實(shí)現(xiàn)對(duì)系統(tǒng)編碼的增刪改查操作 ? ? 3、用戶管理:管理和查看用戶角色 ? ? 4、菜單管理:實(shí)現(xiàn)對(duì)系統(tǒng)菜單的增刪改查操作 ? ? 5、角色管理:

    2024年02月16日
    瀏覽(27)
  • 芋道SpringBoot配置Maven、創(chuàng)建SpringBoot項(xiàng)目、創(chuàng)建Web接口、讀取配置信息

    芋道SpringBoot配置Maven、創(chuàng)建SpringBoot項(xiàng)目、創(chuàng)建Web接口、讀取配置信息

    ??作者主頁:青花鎖 ??簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??、Java微服務(wù)架構(gòu)公號(hào)作者?? ??簡歷模板、學(xué)習(xí)資料、面試題庫、技術(shù)互助 ??文末獲取聯(lián)系方式 ?? 第一章 芋道 Spring Boot 快速入門 芋道 SpringBoot是一款國產(chǎn)的SpringCloud微服務(wù)框架,包括Outh2.0、微服務(wù)網(wǎng)關(guān)、微服務(wù)注冊(cè)中

    2024年04月23日
    瀏覽(20)
  • Visual Studio Code配置開發(fā)Maven項(xiàng)目、Spring Boot項(xiàng)目

    Visual Studio Code配置開發(fā)Maven項(xiàng)目、Spring Boot項(xiàng)目

    ctrl+shift+p打開搜索setting.json,這個(gè)setting.json配置屬于全局配置 配置全局的Java與Maven信息 可以在當(dāng)前項(xiàng)目的.vscode文件夾中,編輯或者創(chuàng)建settings.json,進(jìn)行Java、Maven配置以此覆蓋全局配置。 截至目前,新版本VSCode的Java擴(kuò)展需要Java 17或更新的版本 如果想使用低版本的JDK,則需

    2024年02月03日
    瀏覽(20)
  • IDEA創(chuàng)建spring boot項(xiàng)目無法加載出maven里的pom.xml,而是settings.gradle

    IDEA創(chuàng)建spring boot項(xiàng)目無法加載出maven里的pom.xml,而是settings.gradle

    在創(chuàng)建的maven項(xiàng)目里找不到pom.xml文件而是settings.gradle,如下圖所示: 原因和解決方法: 是因?yàn)樵趧?chuàng)建Springboot項(xiàng)目的時(shí)候type里選的是Gradle,gradle和maven又不一樣,換成maven就行了,具體操作如下圖所示: 在用idea創(chuàng)建maven項(xiàng)目時(shí),在Project Metadata界面Type選項(xiàng)下唯有Maven和Maven PO

    2024年02月09日
    瀏覽(85)
  • 【Spring Boot學(xué)習(xí)一】創(chuàng)建項(xiàng)目 && Spring Boot的配置文件

    【Spring Boot學(xué)習(xí)一】創(chuàng)建項(xiàng)目 && Spring Boot的配置文件

    目錄 一、安裝插件 二、創(chuàng)建Spring Boot項(xiàng)目 1、創(chuàng)建項(xiàng)目 1.1?使用IDEA創(chuàng)建 ?1.2?網(wǎng)頁版本創(chuàng)建 2、項(xiàng)目目錄介紹與運(yùn)行 三、Sping Boot的配置文件(重點(diǎn)) ??1、.properties配置文件 (1)基礎(chǔ)語法:Key = value (2)讀取配置?件中的內(nèi)容,@Value 注解使?“${}”的格式讀??; ??2、.y

    2024年02月16日
    瀏覽(38)
  • 使用Maven父工程構(gòu)建spring boot子工程

    使用Maven父工程構(gòu)建spring boot子工程

    注意:子工程引入springboot相關(guān)依賴之后子工程才能被解析為springboot模塊

    2024年02月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包