欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

idea Maven Springboot多模塊項(xiàng)目打包時(shí)90%的問題及解決方案

 更新時(shí)間:2025年08月04日 14:52:01   作者:紅塵丶世界  
這篇文章主要介紹了idea Maven Springboot多模塊項(xiàng)目打包時(shí)90%的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1. 前言

之所以寫這篇文章是因?yàn)樵谑褂肕aven的過(guò)程中遇到了許多問題,在這里作為記錄總結(jié)

2. 問題

使用idea打包的時(shí)候編譯偶爾成功偶爾失敗,本地運(yùn)行能成功,有時(shí)能打包成功但是發(fā)現(xiàn)使用 jar 包跑的時(shí)候會(huì)出現(xiàn)類找不到的情況,最終經(jīng)過(guò)排查發(fā)現(xiàn)有部分的類打包的時(shí)候打包不進(jìn)去。

3. 解決辦法

關(guān)閉idea,找到對(duì)應(yīng)項(xiàng)目的目錄刪除 .idea 文件,讓 idea 去重構(gòu)項(xiàng)目

刪除 Maven 本地倉(cāng)庫(kù)下當(dāng)前項(xiàng)目的對(duì)應(yīng)的包,以 org.apache 為例,刪除該文件夾下的所有文件夾。

清除 本地Maven 倉(cāng)庫(kù)中下載失敗的jar 包

#1. 創(chuàng)一個(gè).bat文件使用記事本打開 
#2. 修改路徑為maven本地倉(cāng)庫(kù)路徑
#3. 保存退出,雙擊執(zhí)行
set REPOSITORY_PATH=D:\xxxx\apache-maven-3.3.9\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    del /s /q %%i
)
rem 搜索完畢
pause

刷新maven本地倉(cāng)庫(kù),順便檢查一下 maven 配置和 maven 的jdk 配置

在idea中File -> settings -> -> Build,Execution -> Build Tools -> Maven -> repositories

重啟idea(當(dāng)然也可以選擇Reload,個(gè)人建議重啟idea),reload 有時(shí)會(huì)出現(xiàn)更新不上的情況。

重啟后,會(huì)發(fā)現(xiàn)可能有部分模塊引用了其它模塊的jar會(huì)報(bào)錯(cuò),這是正?,F(xiàn)象,這是因?yàn)槟銢]有對(duì)公共模塊進(jìn)行打包,導(dǎo)致引入了公共模塊的其它模塊報(bào)錯(cuò),但如果除了公共模塊之外還有其它的jar包還是報(bào)錯(cuò)這就得檢查一下maven 本地倉(cāng)庫(kù)是否下載成功了。

指定打包方式:

  • 父項(xiàng)目指定打包方式為pom
  • 公共模塊例如 common 、utils、Entity 這些模塊,建議打成jar包
  • 可執(zhí)行模塊打成war 包
<! -- 具體指定打包方式,在pom文件的properties 上方添加: -->
<packaging>pom</packaging>
<packaging>jar</packaging>
<packaging>war</packaging>

在可執(zhí)行模塊添加 springboot maven 打包插件,其它模塊無(wú)需添加,最好指定主類。

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>xxx.xxx.mainClass</mainClass>
                    <cleanCache>true</cleanCache>
                    <sourceDirectory>src/main/java</sourceDirectory>
                    <fork>true</fork>
                    <addResources>true</addResources>
                    <classifier>exec</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>

在公共項(xiàng)目先進(jìn)行打包

所有公共項(xiàng)目全部打包之后需要Reload 一下,重新導(dǎo)入一下jar,導(dǎo)入之后,所有的如果導(dǎo)入成功就不會(huì)報(bào)錯(cuò)了,這里還是建議重啟,idea 有時(shí)會(huì)抽風(fēng)存在導(dǎo)入不成功的情況。

在父項(xiàng)目中執(zhí)行package打包

4. jar 包沖突

這里推薦一個(gè)插件,Maven Helper , 在idea setting 里面下載maven helper 插件。

下載后進(jìn)入pom.xml 文件,點(diǎn)擊Dependency Analyzer,就能看到項(xiàng)目中依賴的版本了,如果是沖突的jar 就會(huì)爆紅。

選擇爆紅的jar,鼠標(biāo)右擊選擇exclusion,就能排查沖突的依賴了,然后點(diǎn)擊 Reimport 和 Refresh UI,就能看到之前沖突的jar被排查了

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java網(wǎng)絡(luò)編程之UDP實(shí)現(xiàn)原理解析

    Java網(wǎng)絡(luò)編程之UDP實(shí)現(xiàn)原理解析

    UDP實(shí)現(xiàn)通信非常簡(jiǎn)單,沒有服務(wù)器,每個(gè)都是客戶端,每個(gè)客戶端都需要一個(gè)發(fā)送端口和一個(gè)接收端口,本文給大家介紹Java網(wǎng)絡(luò)編程之UDP實(shí)現(xiàn)原理解析,感興趣的朋友一起看看吧
    2021-09-09
  • Java并發(fā)編程之線程池實(shí)現(xiàn)原理詳解

    Java并發(fā)編程之線程池實(shí)現(xiàn)原理詳解

    池化思想是一種空間換時(shí)間的思想,期望使用預(yù)先創(chuàng)建好的對(duì)象來(lái)減少頻繁創(chuàng)建對(duì)象的性能開銷,java中有多種池化思想的應(yīng)用,例如:數(shù)據(jù)庫(kù)連接池、線程池等,下面就來(lái)具體講講
    2023-05-05
  • Springboot集成Minio實(shí)現(xiàn)文件上傳基本步驟

    Springboot集成Minio實(shí)現(xiàn)文件上傳基本步驟

    這篇文章主要介紹了Springboot集成Minio實(shí)現(xiàn)文件上傳基本步驟,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-06-06
  • 深入了解java 8的函數(shù)式編程

    深入了解java 8的函數(shù)式編程

    函數(shù)式編程并不是Java新提出的概念,其與指令編程相比,強(qiáng)調(diào)函數(shù)的計(jì)算比指令的計(jì)算更重要;與過(guò)程化編程相比,其中函數(shù)的計(jì)算可以隨時(shí)調(diào)用。下面我們來(lái)詳細(xì)了解一下吧
    2019-06-06
  • java 抽象類與接口的區(qū)別總結(jié)

    java 抽象類與接口的區(qū)別總結(jié)

    這篇文章主要介紹了java 抽象類與接口的區(qū)別總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • springboot實(shí)現(xiàn)指定mybatis中mapper文件掃描路徑

    springboot實(shí)現(xiàn)指定mybatis中mapper文件掃描路徑

    這篇文章主要介紹了springboot實(shí)現(xiàn)指定mybatis中mapper文件掃描路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Hibernate命名策略詳解

    Hibernate命名策略詳解

    本文主要介紹了Hibernate命名策略。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • 圖解Java經(jīng)典算法冒泡選擇插入希爾排序的原理與實(shí)現(xiàn)

    圖解Java經(jīng)典算法冒泡選擇插入希爾排序的原理與實(shí)現(xiàn)

    冒泡排序是一種簡(jiǎn)單的排序算法,它也是一種穩(wěn)定排序算法。其實(shí)現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對(duì)相鄰的元素,當(dāng)該對(duì)元素順序不正確時(shí)進(jìn)行交換。一直重復(fù)這個(gè)過(guò)程,直到?jīng)]有任何兩個(gè)相鄰元素可以交換,就表明完成了排序
    2022-09-09
  • Java?多線程并發(fā)ReentrantLock

    Java?多線程并發(fā)ReentrantLock

    這篇文章主要介紹了Java?多線程并發(fā)ReentrantLock,Java?提供了?ReentrantLock?可重入鎖來(lái)提供更豐富的能力和靈活性,感興趣的小伙伴可以參考一下
    2022-06-06
  • SpringBoot @Retryable注解使用

    SpringBoot @Retryable注解使用

    SpringBoot提供的@Retryable注解可以方便地實(shí)現(xiàn)方法的重試機(jī)制,可以在不侵入原有邏輯代碼的方式下,優(yōu)雅地實(shí)現(xiàn)重處理功能
    2024-12-12

最新評(píng)論