中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IDEA搭建Maven模塊化項目的實現方法

發布時間:2023-06-12 17:51:45 來源:億速云 閱讀:303 作者:栢白 欄目:開發技術

今天小編給大家分享的是IDEA搭建Maven模塊化項目的實現方法,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。

目錄
  • 1.前言

  • 2. 軟硬件環境

  • 3.項目搭建

    • 3.1.創建 SpringBoot 父項目

    • 3.2. 構建子項目centerdao

    • 3.3. 構建子項目centerweb

  • 4. 建立父子 Module 依賴

    • 4.1 刪除不必要文件

    • 4.2.修改 Parent 項目 packaging

    • 4.3.修改子項目pom.xml 信息

    • 4.4.補充說明

  • 5. 項目繼承關系

    • 6. 驗證項目

      • 參考

        1.前言

        為了更好地組織和管理項目代碼。通過將一個大型項目分解成多個模塊,每個模塊都可以獨立地編譯、測試和部署,從而提高項目的可維護性和可擴展性。多模塊項目,適用于一些比較大的項目,通過合理的模塊拆分,實現代碼的復用,便于維護和管理。尤其是一些開源框架,也是采用多模塊的方式,提供插件集成,用戶可以根據需要配置指定的模塊。

        構建微服務項目,基本上會對模塊進行明確的劃分,比如:

        • 抽象定義公共代碼及工具類封裝進行引用

        • 業務代碼進行單獨定義模塊

        • 對外提供的接口服務單獨定義模塊

        • 不同功能系統不同模塊

        • ......

        上面的拆分也并非絕對,隨著架構師對于項目結構的不同理解,可能會衍生出不同的模塊

        本篇文章會詳細演示如何創建 SpringBoot 父子模塊的項目,針對部分知識點著重講解

        2. 軟硬件環境

        電腦: win10

        創建項目工具: IDEA 2022.3

        JDK 版本:JDK8

        Maven版本: 3.6.1

        3.項目搭建

        3.1.創建 SpringBoot 父項目

        1)首先打開 IDEA 工具,創建spring項目 ,點擊File ---->new ---> Create New Project

        IDEA搭建Maven模塊化項目的實現方法

        2)選擇 Spring Initializr(初始化),選擇Project SDK 1.8,類型選擇maven,Java語言選擇8

        IDEA搭建Maven模塊化項目的實現方法

        Group: 項目組織唯一的標識符,實際對應 Java 的包的結構,是 main 目錄里 Java 的目錄結構Group 也就是 groupId,分為多個段;一般情況下 第一段為域,第二段為公司,第三段為項目名稱。以 Nacos 源碼進行舉例,Group 為 com.alibaba.nacos:com 為商業組織,alibaba 為公司名稱,nacos 就是項目名稱

        Artifact: 項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱,Artifact 即為 artifactId。

        Type: 分為四種不同的類型,日常我們選擇默認第一條就行,也就是 Maven Project

        Language: 開發語言的話自然就是默認的 Java

        Packaging: 打包方式,分為 War 包 和 Jar 包,這里選擇 Jar 包

        Java Version: 選擇 Java 的一個版本,再堅持 20 年的 JDK 1.8

        Version: 當前項目的一個版本,SNAPSHOT 為快照的意思

        開發時一般使用此類型,因為對于 Maven 倉庫的同步較為友好,有不同緯度的同步選擇

        Name: 定義項目名稱

        Description: 定義項目描述信息,幫助別人更好的了解項目

        Package: 定義 main.java 目錄下的結構

        3)選擇 SpringBoot 版本信息以及 Pom.xml 文件依賴組件

        這里選擇的 SpringBoot 版本是 2.7.1,jdk8對應2.*版本,點擊 Next 繼續進行創建項目

        IDEA搭建Maven模塊化項目的實現方法

        4)一個標準的 SpringBoot 項目就產生了

        IDEA搭建Maven模塊化項目的實現方法

        3.2. 構建子項目centerdao

        在父項目的基礎上直接創建module

        1)點擊菜單欄中 File -> New -> Module,不同版本中可能會有一點差異

        IDEA搭建Maven模塊化項目的實現方法

         2)這里就是重復上述在創建 SpringBoot 項目時的步驟,Next 下一步

        IDEA搭建Maven模塊化項目的實現方法

        3)配置可按照需求進行選擇,因為不同的 Module 需要引用不同的 Pom 依賴,后面會與 Parent 保持一個交互,確認創建信息,點擊 Finish 生成項目

        IDEA搭建Maven模塊化項目的實現方法

        4)最終結構目錄如下,項目已成功創建,后續我們要修改其中的 Pom.xml 使其成為真正的父子項目

        IDEA搭建Maven模塊化項目的實現方法

        3.3. 構建子項目centerweb

        1)創建步驟與上邊的centerdao一致

        IDEA搭建Maven模塊化項目的實現方法

         2)添加spring web依賴,web項目作為整個項目的啟動項目,繼續添加代碼簡化依賴lombok

        IDEA搭建Maven模塊化項目的實現方法

        3)最終項目結構如下 

        IDEA搭建Maven模塊化項目的實現方法

        4. 建立父子 Module 依賴

        將建立的 Parent 項目與后面創建的 Module 產生關聯,需要改動以下幾點

        修改 Parent 項目 Pom.xml 的打包方式 packaging 標簽打包方式為 pom刪除不必要文件并梳理 Pom.xml 依賴上下級關系需要新加一個 modules 標簽,包含所有子項目,將所有的子模塊都引入進去

        對于子工程中的 .xml 文件

        修改子項目Module 項目 pom.xml中parent 標簽為其父工程添加打包方式為 jar刪除依賴包:繼承父工程的依賴包

        4.1 刪除不必要文件

        1)刪除父項目紅框標注的內容:src 文件是保存源代碼的,可是我們的多模塊的代碼存放在多個架構層中,所以不需要這個 src 來存放代碼

        2)刪除除啟動項目centerweb之外的啟動文件和配置文件和啟動類

        IDEA搭建Maven模塊化項目的實現方法

        刪除后的項目結構是這樣的: 

        IDEA搭建Maven模塊化項目的實現方法

        4.2.修改 Parent 項目 packaging

        打開 Parent 項目的根 Pom.xml 文件,新增下方代碼

            <!--打包方式-->
            <packaging>pom</packaging>
            <modules>
                <!-- 配置子項目-->
                <!-- 對應artifactId-->
                <module>centerdao</module>
                <module>centerweb</module>
            </modules>

        packaging 包含三個值 Jar、War、Pom,默認 Jar的方式

        首先來解釋下 packaging 為 Pom 的意思,宏觀而言即沒有代碼需要測試或者編譯,也沒有資源需要處理

        Jar: 內部調用或作為服務進行發布使用

        War: 需要部署的項目

        Pom: 寓意為一個父級項目,一般作為項目聚合和依賴傳遞使用

        modules 代表了 Parent 項目下的子 Module,體現了聚合的思想

        這里把 父項目Parent 項目的 Pom.xml 配置復制出來,幫助大家后續排查問題

        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>
            <parent>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.7.11</version>
                <relativePath/> 
            </parent>
            <groupId>com.ykx.center</groupId>
            <artifactId>centerparent</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <name>centerparent</name>
            <description>SpringBoot 父子模塊項目</description>
            <properties>
                <java.version>1.8</java.version>
            </properties>
            <!--打包方式-->
            <packaging>pom</packaging>
            <modules>
                <!-- 配置子項目-->
                <!-- 對應artifactId-->
                <module>centerdao</module>
                <module>centerweb</module>
            </modules>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter</artifactId>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-test</artifactId>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </project>

        spring-boot-maven-plugin 的作用是運行 mvn package 時會將項目打包為可運行的 jar 包,java -jar 運行即可

        如果不加這個 pluginsjava -jar xxx.jar 會報出如下錯誤

        xxx/target/bootdemo-remote-api-0.0.1-SNAPSHOT.jar中沒有主清單屬性

        4.3.修改子項目pom.xml 信息

        創建后的子項目的 Parent 信息是 SpringBoot 配置,修改后如下

        <parent>
        		<groupId>com.ykx.center</groupId>
        		<artifactId>centerparent</artifactId>
        		<version>0.0.1-SNAPSHOT</version>
        	</parent>

        4.4.補充說明

        另外說一下 dependencies 和 dependencyManagement 標簽做一個講解

        1)dependencies

        如果 Parent 項目中使用 dependencies 標簽,標簽內的依賴默認傳遞子 Module,不用子 Module 進行顯示書寫依賴

        2)dependencyManagement

        dependencyManagement 與dependencies 不同的是,標簽內的依賴不會默認傳遞子 Module,其作用只是為了統一版本聲明        

        如果子 Module 依賴 Parent 項目中 dependencyManagement 標簽內的 pom 依賴,需要顯示在子 Module 的 pom 文件中進行書寫

        5. 項目繼承關系

        我們按照《構建子 Module》章節的內容,構建出如下所述的子 Module,如果centerweb項目引用centerdao項目

        <!--引用dao項目-->
        		<dependency>
        			<groupId>com.ykx</groupId>
        			<artifactId>centerdao</artifactId>
        			<version>0.0.1-SNAPSHOT</version>
        		</dependency>

        然后修改centenweb子 Module 的 pom.xml 文件如下

        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        	<modelVersion>4.0.0</modelVersion>
        	<parent>
        		<groupId>com.ykx.center</groupId>
        		<artifactId>centerparent</artifactId>
        		<version>0.0.1-SNAPSHOT</version>
        	</parent>
        	<groupId>com.centerweb</groupId>
        	<artifactId>centerweb</artifactId>
        	<version>0.0.1-SNAPSHOT</version>
        	<name>centerweb</name>
        	<description>centerweb子項目</description>
        	<properties>
        		<java.version>1.8</java.version>
        		<centerdao.version>0.0.1-SNAPSHOT</centerdao.version>
        	</properties>
        	<dependencies>
        		<!--引用dao項目-->
        		<dependency>
        			<groupId>com.ykx</groupId>
        			<artifactId>centerdao</artifactId>
        			<version>${centerdao.version}</version>
        		</dependency>
        		<dependency>
        			<groupId>org.springframework.boot</groupId>
        			<artifactId>spring-boot-starter-web</artifactId>
        		</dependency>
        		<dependency>
        			<groupId>org.projectlombok</groupId>
        			<artifactId>lombok</artifactId>
        			<optional>true</optional>
        		</dependency>
        		<dependency>
        			<groupId>org.springframework.boot</groupId>
        			<artifactId>spring-boot-starter-test</artifactId>
        			<scope>test</scope>
        		</dependency>
        		<dependency>
        			<groupId>org.springframework.boot</groupId>
        			<artifactId>spring-boot</artifactId>
        		</dependency>
        	</dependencies>
        	<build>
        		<plugins>
        			<plugin>
        				<groupId>org.springframework.boot</groupId>
        				<artifactId>spring-boot-maven-plugin</artifactId>
        				<configuration>
        					<excludes>
        						<exclude>
        							<groupId>org.projectlombok</groupId>
        							<artifactId>lombok</artifactId>
        						</exclude>
        					</excludes>
        				</configuration>
        			</plugin>
        		</plugins>
        	</build>
        </project>

        通過繼承關系的設置,centerdao 中的代碼就可以被 centerweb  項目進行引用

        6. 驗證項目

        在 Parent 項目 pom.xml中 dependencies 標簽中定義了 spring-boot-starter-web 依賴,直接使用 web 相關內容即可,直接可以運行

        centerweb中創建 Controller 控制器

        @RestController
        public class DemoController {
             @RequestMapping("/ok")
            public String test() {   
                return "OK";
            }
        }

        啟動項目

        IDEA搭建Maven模塊化項目的實現方法

        啟動后端項目成功后,使用restfultool請求接口

        IDEA搭建Maven模塊化項目的實現方法

        參考

        IDEA 最便捷創建 SpringBoot 父子 Module 項目

        關于IDEA搭建Maven模塊化項目的實現方法就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

        向AI問一下細節

        免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

        AI

        和龙市| 芜湖县| 松原市| 临高县| 苗栗市| 城口县| 普安县| 扶绥县| 连城县| 静安区| 宝坻区| 大荔县| 天长市| 安岳县| 禹州市| 巴中市| 庆元县| 北流市| 罗甸县| 蒲城县| 沧源| 石屏县| 闸北区| 济宁市| 汉阴县| 河间市| 故城县| 台南市| 宁晋县| 迁西县| 满城县| 金平| 万盛区| 商丘市| 瑞昌市| 宁德市| 静海县| 江门市| 庄河市| 凤山市| 大安市|