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>

最后给大家赠送一本书籍《数据结构与算法经典问题解析》豆瓣评分8.6 需要的朋友可以来私信我领取《springboot项目打包时提示“程序包xxx不存在,找不到符号”》
本书的目的是使读者知晓数据结构和算法的设计原理和实现,而并非单纯地讲述定理及证明。为此,本书利用不同的复杂度来改善问题的解。对于许多问题,从穷举解法开始,逐步引入问题的最佳解,并给出算法所需的运行时间和空间。

全书包含4个部分,第一部分(第1〜2章)主要描述抽象数据类型,给出算法的基本概念和复杂度分析与评价方法,并讨论几乎每章都要用到的递归和回溯技术

第二部分(第3〜9章)介绍基本数据结构,包括链表、栈、队列、树、优先队列、堆、并査集和图,对于每一种数据结构分别采用多个实例进行具体的演示。

第三部分(第10-15章)介绍数据处理的技术,包括排序、査找、选择、符号表、散列和字符串算法。

第四部分(第16〜21章)重点介绍一些常用的算法设计技术及应用,包括贪婪算法、分治算法、动态规划算法、复杂度类型,并讨论对于面试和考试的一些有用话题。本书强调问题及分析,而不侧重于理论。可以作为从事计算机研究与开发的技术人员的参考书,特别是对正在准备面试、参加选拔性考试以及校园面试的读者尤为有用。

不想把篇幅拉的太长需要的朋友可以来私信领取

书籍免费获取方式:关注然后私信“资料”即可获得文档领取方式

同时希望大家领到之后不要做收藏党!而是能够花一些时间认真看完文档,让它真正发挥出价值来。
《springboot项目打包时提示“程序包xxx不存在,找不到符号”》《springboot项目打包时提示“程序包xxx不存在,找不到符号”》

    原文作者:java熟
    原文地址: https://blog.csdn.net/snvjd/article/details/103957316
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞