Maven聚合的springboot項(xiàng)目打包構(gòu)建jar包

話不多說(shuō),直接進(jìn)入正題(maven版本3.5.4):

聚合項(xiàng)目結(jié)構(gòu):

其中父模塊的打包方式為pom:

<?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.pjqdyd</groupId>
    <artifactId>slife-dev</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Slife-dev</name>
    <description>slife-dev-back-end</description>

    <modules>
        <module>slife-dev-common</module>
        <module>slife-dev-pojo</module>
        <module>slife-dev-dao</module>
        <module>slife-dev-service</module>
        <module>slife-dev-api</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/>
    </parent>
</project>

子模塊的打包方式都為<packaging>jar</packaging>
子模塊間的依賴關(guān)系為:
common --> pojo --> dao --> service -->api
其中:
common層定義一些基本的springframework的依賴, 方便下面的模塊繼承.
pojo是實(shí)體類層.
dao是數(shù)據(jù)持久層.
service是業(yè)務(wù)邏輯層.
api是web接口層(Controller層).

在其中的api層(springboot啟動(dòng)主類在這一層),也就是最頂級(jí)的子模塊的pom添加maven打包springboot項(xiàng)目插件:

<?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">
    <parent>
        <artifactId>slife-dev</artifactId>
        <groupId>com.pjqdyd</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>slife-dev-api</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.pjqdyd</groupId>
            <artifactId>slife-dev-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

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

接下來(lái)在父模塊下運(yùn)行命令:mvn clean package -Dmaven.test.skip=true

控制臺(tái)提示信息如圖,表示成功:

可以看見(jiàn)maven自動(dòng)根據(jù)我們模塊的依賴順序構(gòu)建好了項(xiàng)目.

到這一步,我們的jar包就已經(jīng)打包好, 我們直接到api模塊下的target目錄下找到slife-dev-api-1.0-SNAPSHOT.jar可執(zhí)行jar包,這里我復(fù)制到桌面運(yùn)行即可:

注意:

  1. mvn打包springboot項(xiàng)目的插件不能放在父模塊的pom中, 因?yàn)檫@會(huì)讓子模塊都繼承這個(gè)插件, 在子模塊common, pojo, dao, service中是沒(méi)有主類的,所以打包時(shí)會(huì)提示找不到主類.

2.那么如果剛開(kāi)始在slife-dev-api子模塊下運(yùn)行打包命令會(huì)怎樣呢?, 其實(shí)這里會(huì)提示找不到service的jar包, 因?yàn)閍pi模塊依賴service, 解決方法是先將所有子模塊都install到本地,直接在父模塊下運(yùn)行mvn clean install -Dmaven.test.skip=true就行了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Maven的基本了解 什么是Maven? Maven就是Apache下的一個(gè)開(kāi)源項(xiàng)目。它是用純java開(kāi)發(fā)的。是一...
    Bcome閱讀 3,154評(píng)論 0 7
  • Maven最佳實(shí)踐:劃分模塊 所有用Maven管理的真實(shí)的項(xiàng)目都應(yīng)該是分模塊的,每個(gè)模塊都對(duì)應(yīng)著一個(gè)pom.xml...
    我不是T先生閱讀 2,826評(píng)論 0 4
  • 1. 操作步驟 將多個(gè)子項(xiàng)目聚合在一個(gè)父工程中,子項(xiàng)目中,可引入parent標(biāo)簽,即:繼承父工程。 創(chuàng)建其他的mo...
    小胖學(xué)編程閱讀 4,596評(píng)論 0 8
  • 逅弈 轉(zhuǎn)載請(qǐng)注明原創(chuàng)出處,謝謝! 以前的日子 以前我們寫(xiě)代碼時(shí),jar包都默認(rèn)放在一個(gè)叫 /lib 的目錄下,然后...
    逅弈閱讀 3,210評(píng)論 3 45
  • 看到茗的成績(jī),心頓入冰窖。 失望,痛苦,無(wú)奈,交織著像一只無(wú)形的手,在心里捏一下揉一下搓一下。整個(gè)人的...
    sea123閱讀 638評(píng)論 2 2

友情鏈接更多精彩內(nèi)容