亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

IDEA搭建Maven模塊化項目的實現(xiàn)

 更新時間:2023年05月15日 11:00:30   作者:月半花開  
本文主要介紹了IDEA搭建Maven模塊化項目的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.前言

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

構(gòu)建微服務(wù)項目,基本上會對模塊進行明確的劃分,比如:

  • 抽象定義公共代碼及工具類封裝進行引用
  • 業(yè)務(wù)代碼進行單獨定義模塊
  • 對外提供的接口服務(wù)單獨定義模塊
  • 不同功能系統(tǒng)不同模塊
  • ......

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

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

2. 軟硬件環(huán)境

電腦: win10

創(chuàng)建項目工具: IDEA 2022.3

JDK 版本:JDK8

Maven版本: 3.6.1

3.項目搭建

3.1.創(chuàng)建 SpringBoot 父項目

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

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

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

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

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

Language: 開發(fā)語言的話自然就是默認的 Java

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

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

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

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

Name: 定義項目名稱

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

Package: 定義 main.java 目錄下的結(jié)構(gòu)

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

這里選擇的 SpringBoot 版本是 2.7.1,jdk8對應(yīng)2.*版本,點擊 Next 繼續(xù)進行創(chuàng)建項目

4)一個標準的 SpringBoot 項目就產(chǎn)生了

3.2. 構(gòu)建子項目centerdao

在父項目的基礎(chǔ)上直接創(chuàng)建module

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

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

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

4)最終結(jié)構(gòu)目錄如下,項目已成功創(chuàng)建,后續(xù)我們要修改其中的 Pom.xml 使其成為真正的父子項目

3.3. 構(gòu)建子項目centerweb

1)創(chuàng)建步驟與上邊的centerdao一致

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

3)最終項目結(jié)構(gòu)如下 

4. 建立父子 Module 依賴

將建立的 Parent 項目與后面創(chuàng)建的 Module 產(chǎn)生關(guān)聯(lián),需要改動以下幾點

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

對于子工程中的 .xml 文件

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

4.1 刪除不必要文件

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

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

刪除后的項目結(jié)構(gòu)是這樣的: 

4.2.修改 Parent 項目 packaging

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

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

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

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

Jar: 內(nèi)部調(diào)用或作為服務(wù)進行發(fā)布使用

War: 需要部署的項目

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

modules 代表了 Parent 項目下的子 Module,體現(xiàn)了聚合的思想

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

<?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>
        <!-- 配置子項目-->
        <!-- 對應(yīng)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 運行即可

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

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

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

創(chuàng)建后的子項目的 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 標簽,標簽內(nèi)的依賴默認傳遞子 Module,不用子 Module 進行顯示書寫依賴

2)dependencyManagement

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

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

5. 項目繼承關(guān)系

我們按照《構(gòu)建子 Module》章節(jié)的內(nèi)容,構(gòu)建出如下所述的子 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>

通過繼承關(guān)系的設(shè)置,centerdao 中的代碼就可以被 centerweb  項目進行引用

6. 驗證項目

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

centerweb中創(chuàng)建 Controller 控制器

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

啟動項目

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

參考

IDEA 最便捷創(chuàng)建 SpringBoot 父子 Module 項目

到此這篇關(guān)于IDEA搭建Maven模塊化項目的實現(xiàn)的文章就介紹到這了,更多相關(guān)IDEA搭建Maven模塊化項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Spring動態(tài)生成Mysql存儲過程詳解

    Java Spring動態(tài)生成Mysql存儲過程詳解

    這篇文章主要介紹了Java Spring動態(tài)生成Mysql存儲過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Java使用Runnable和Callable實現(xiàn)多線程的區(qū)別詳解

    Java使用Runnable和Callable實現(xiàn)多線程的區(qū)別詳解

    這篇文章主要為大家詳細介紹了Java使用Runnable和Callable實現(xiàn)多線程的區(qū)別之處,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-07-07
  • 深入探討Java多線程中的volatile變量

    深入探討Java多線程中的volatile變量

    這篇文章主要為大家詳細并深入的探討Java多線程中的volatile變量,volatile用來確保將變量的更新操作通知到其他線程,保證了新值能立即同步到主內(nèi)存,以及每次使用前立即從主內(nèi)存刷新,感興趣的小伙伴們可以參考一下
    2016-02-02
  • SpringBoot+vue+Axios實現(xiàn)Token令牌的詳細過程

    SpringBoot+vue+Axios實現(xiàn)Token令牌的詳細過程

    Token是在服務(wù)端產(chǎn)生的,前端可以使用用戶名/密碼向服務(wù)端請求認證(登錄),服務(wù)端認證成功,服務(wù)端會返回?Token?給前端,Token可以使用自己的算法自定義,本文給大家介紹SpringBoot+vue+Axios實現(xiàn)Token令牌,感興趣的朋友一起看看吧
    2023-10-10
  • mybatis-generator自動生成dao、mapping、bean配置操作

    mybatis-generator自動生成dao、mapping、bean配置操作

    這篇文章主要介紹了mybatis-generator自動生成dao、mapping、bean配置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • JavaSE?XML解析技術(shù)的使用方法詳解

    JavaSE?XML解析技術(shù)的使用方法詳解

    XML意為可擴展標記語言,被多數(shù)技術(shù)人員用以選擇作為數(shù)據(jù)傳輸?shù)妮d體,成為一種通用的數(shù)據(jù)交換格式,下面這篇文章主要給大家介紹了關(guān)于JavaSE?XML解析技術(shù)的使用方法,需要的朋友可以參考下
    2023-04-04
  • SpringBoot項目如何打war包問題詳解

    SpringBoot項目如何打war包問題詳解

    傳統(tǒng)的部署方式:將項目打成war包,放入tomcat的webapps目錄下面,啟動tomcat,即可訪問.文中有非常詳細的介紹,對正在學(xué)習(xí)springboot的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java?8?Stream?處理數(shù)據(jù)方法匯總

    Java?8?Stream?處理數(shù)據(jù)方法匯總

    這篇文章主要介紹了Java?8?Stream處理數(shù)據(jù),Stream是Java?8?新引入的一個包它讓我們能用聲明式的方式處理數(shù)據(jù),Stream流式處理相較于傳統(tǒng)方法簡潔高效,也便于進行并發(fā)編程,更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • JAVA JDK8 List分組的實現(xiàn)和用法

    JAVA JDK8 List分組的實現(xiàn)和用法

    今天小編就為大家分享一篇關(guān)于JAVA JDK8 List分組的實現(xiàn)和用法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 基于Springboot吞吐量優(yōu)化解決方案

    基于Springboot吞吐量優(yōu)化解決方案

    這篇文章主要介紹了基于Springboot吞吐量優(yōu)化解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論