IDEA的SpringBoot多模塊構(gòu)建

IDEA的SpringBoot多模塊構(gòu)建

構(gòu)建環(huán)境

  • 編輯器:IntelliJ IDEA 2018
  • JDK版本:1.8
  • Spring Boot版本:1.5.20.RELEASE

多模塊Maven項目

為了便于統(tǒng)一的版本維護和管理锰霜,經(jīng)常會用到Maven的多模塊模式解幼。

本文以以下模塊結(jié)構(gòu)為例砂竖,對如何創(chuàng)建多模塊Maven項目進行描述罪治。

圖片.png

構(gòu)建主工程

首先創(chuàng)建一個Maven項目作為 主工程,不使用任何骨架創(chuàng)建蜕衡,創(chuàng)建過程如下:

  • File-->New-->Project
  • -->Maven-->Next
  • -->GroupId={你的GroupId}-->AritifactId={你的ArtifactId}-->Next
  • -->Next-->Finish-->New Whindow

本示例中壤短,我的主項目叫springboot_mainGroupIdAritifactId的配置如下:

圖片.png

構(gòu)建子模塊

子模塊項目創(chuàng)建于主工程之內(nèi)慨仿,創(chuàng)建過程如下:

  • 右鍵點擊項目名稱-->New-->Module
  • 選中Spring Initializr-->Next
  • -->Group={主工程的GroupId}-->Aritifact={當(dāng)前模塊的ArtifactId}
  • -->Next-->Next-->Finish

本示例中久脯,子模塊的名稱為module-amodule-bGroupAritifact的配置如下:

圖片.png

通過同樣的方式創(chuàng)建子模塊module-b镰吆。

優(yōu)化結(jié)構(gòu)

完成上述的主工程以及兩個子模塊創(chuàng)建之后帘撰,項目結(jié)構(gòu)視圖如下:

圖片.png

下面對這個多模塊項目進行優(yōu)化。

刪除主工程多余目錄

并不需要在主工程進行任何代碼開發(fā)万皿,所以刪除其src目錄摧找。

刪除子模塊無需文件

如果不使用mvnw構(gòu)建,可以刪除子模塊的.mvn目錄和mvnw文件牢硅、mvnw.cmd文件蹬耘。

不使用HELP.md文件,也可刪除减余。

編輯主工程pom.xml

作為主工程婆赠,其pom.xml可以作為其他子模塊工程的基準(zhǔn)依賴,方便進行統(tǒng)一的版本管理佳励。

將主工程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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.hayson</groupId>
    <artifactId>springboot_main</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--父級項目的packaging設(shè)置為pom-->
    <packaging>pom</packaging>

    <!--主工程包含子模塊工廠配置-->
    <modules>
        <module>module-a</module>
        <module>module-b</module>
    </modules>

    <!--子模塊的Spring Boot配置-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.20.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

     <!--配置參數(shù)(注釋掉的在)-->
    <properties>
        <!-- 下面的三行,其實在前面<parent>的spring-boot-starter-parent中已默認配置有 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!--例如(沒使用Spring Cloud蛆挫,這里不用配置):指定使用的spring-cloud版本-->
        <spring-cloud.version>Dalston.SR1</spring-cloud.version>
    </properties>

    <!--子模塊Spring Boot公共依賴-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <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>

    <!--Spring Cloud 版本序列配置(沒使用Spring Cloud赃承,這里不用配置)-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <!--使用前面配置的版本-->
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

注意:

Spring BootSpring Cloud有特定的對照關(guān)系,具體可參看:http://projects.spring.io/spring-cloud/

編輯子模塊pom.xml

子模塊pom.xml可以引用主工程pom.xml的依賴關(guān)系悴侵,所以也對其進行配置瞧剖,其中module-apom.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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!--父工程的依賴-->
    <parent>
        <groupId>com.hayson</groupId>
        <artifactId>springboot_main</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <!--去除子模塊的groudId-->
    <!--<groupId>com.hayson</groupId>-->
    <artifactId>module-a</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>module-a</name>
    <description>Demo project for Spring Boot</description>
    <!--子模塊的packaging設(shè)置為jar-->
    <packaging>jar</packaging>

    <!--子模塊的專用依賴-->
    <dependencies>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

刪除core的啟動類和配置文件

如果是Spring Boot單體應(yīng)用分模塊開發(fā),則只需保留一個模塊的啟動類 和 配置文件, 其他模塊的啟動類都刪除抓于, 整個項目只需要一個啟動類和一個配置文件 做粤。

五、打包

打包前捉撮,確保只有啟動類添加下面的插件怕品,該插件用來打包項目:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

在父模塊pom.xmlproperties的標(biāo)簽添加如下:

<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

該設(shè)置表示打包時,跳過執(zhí)行mvn test巾遭,防止打包在test時出錯肉康。

確保上面設(shè)置完后,在maven窗口中灼舍,在父模塊點擊Lifecycle下的package執(zhí)行打包:

圖片.png

控制臺輸出如下信息:

圖片.png

可以看到吼和,項目打包在模塊的target目錄下,在模塊target目錄右鍵打開文件管理器查看:

圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骑素,一起剝皮案震驚了整個濱河市炫乓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌献丑,老刑警劉巖末捣,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異阳距,居然都是意外死亡塔粒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門筐摘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卒茬,“玉大人,你說我怎么就攤上這事咖熟∑越停” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵馍管,是天一觀的道長郭赐。 經(jīng)常有香客問我,道長确沸,這世上最難降的妖魔是什么捌锭? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮罗捎,結(jié)果婚禮上观谦,老公的妹妹穿的比我還像新娘。我一直安慰自己桨菜,他們只是感情好豁状,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布捉偏。 她就那樣靜靜地躺著,像睡著了一般泻红。 火紅的嫁衣襯著肌膚如雪夭禽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天谊路,我揣著相機與錄音讹躯,去河邊找鬼。 笑死凶异,一個胖子當(dāng)著我的面吹牛蜀撑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剩彬,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼酷麦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了喉恋?” 一聲冷哼從身側(cè)響起沃饶,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎轻黑,沒想到半個月后糊肤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡氓鄙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年馆揉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抖拦。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡升酣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出态罪,到底是詐尸還是另有隱情噩茄,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布复颈,位于F島的核電站绩聘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏耗啦。R本人自食惡果不足惜凿菩,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帜讲。 院中可真熱鬧蓄髓,春花似錦、人聲如沸舒帮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玩郊。三九已至肢执,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間译红,已是汗流浹背预茄。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侦厚,地道東北人耻陕。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像刨沦,于是被迫代替她去往敵國和親诗宣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容