springboot項目打包時提示“程序包xxx不存在,找不到符號”


springboot多包工程,在使用maven進行打包的時候,一直提示“程序包xxx不存在,找不到符號”,但項目是可以正常啟動運行的,開始一直以為是maven哪里沒有配置好導致的,后來才發現原來是springboot的maven插件導致的

springboot項目打包時提示“程序包xxx不存在,找不到符號”

項目結構:

xxx-parent:頂級父工程

xxx-a:子項目1

xxx-b:子項目2

xxx-c:子項目3

依賴關系:

a -> b -> c,從左到右,依次被依賴(c依賴b,b依賴a)

問題場景:

在使用mvn package的時候,一直提示“程序包xxx不存在,找不到符號”,開始以為是依賴的上層包沒打好,仔細檢查后發現都沒問題,就算將本地倉庫中的依賴包清理之后,重新install打包也還是有這個問題

原因分析:

因為之前的springmvc出現過類似的問題(Maven打包失敗,提示“找不到符號”),所以一開始也以為是本地倉庫的緩存所致,浪費了好長時間,后來才發現原來是springboot自身的編譯插件spring-boot-maven-plugin導致的。

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

如上,就是springboot的maven插件,用這個插件打包的Jar包可以直接運行,但是不可依賴

解決方案(三選一):

1、不要將此插件放到頂級父工程中,在需要打成可執行jar的地方添加就好了,如果是需要被依賴的,就不要添加此插件(如上述案例中,就是xxx-a、xxx-b不加,xxx-c需要加);

2、在需要對外提供依賴的項目的pom里設置(如本項目的xxx-a、xxx-b),這樣設置會讓項目生成兩個jar:一個可執行jar,一個可依賴的jar;

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 生成可執行的jar的名字:xxx-exec.jar -->
                <!-- 不固定,寫成abcd都可以 -->
                <classifier>exec</classifier>
            </configuration>
        </plugin>
    </plugins>
</build>

3、在configuration中加入skip標簽,取消生成可執行jar;

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


轉至:https://www.jiweichengzhu.com/article/9119217ea198412f85477c9fdef6a080


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM