问题概述
关于这个问题,博主是在新代码架构时遇见的,
环境:项目采用聚合项目的方式,工程项目中所有的服务均以jar的形式存在,然后通过pom聚合为一个服务,
在Intellij IDEA 中【install】编译,打包时,
出现 “ 程序包com....common.utils不存在 ” ,
或者 “ 找不到符号 ”,
如下图:
解决办法
这里需要注意区分,jar包类型,
现在的项目架构,一般都是由多个 Spring Boot Module模块,包与包之间,服务与服务之间解耦,
方便模块拆分和组装以及扩展等,
即,每个Module可根据业务、范围、功能等进行打包单独执行部署,
比如:在一个电商项目中,分为,coupon 优惠券服务,member 会员服务,order 订单服务,ware 商品服务,sso 单点登录服务,gateway 网关服务,等等等,
此时需要在订单服务中,调用商品服务,只需将商品服务打包成jar包,在订单服务的 pom.xml 中引入商品服务即可,
如下图:
但,Spring Boot项目在install打包编译时,包的属性有两种,一种是可依赖包,一种是可执行包,依赖包和执行包的包名是相同的,依赖包先生成,执行包后生成,后生成的执行包会把依赖包覆盖,所以,默认是可执行的jar包,
如下图:
这样以来,就无法调用到依赖包的API了,所以导致了install编译失败,
出现Intellij IDEA install打包编译项目工程时,程序包com....common.utils不存在 或者 找不到符号,
好了,问题找到了,
解决这个问题,
第一步:只需要在Maven打包时,配置Maven插件 spring-boot-maven-plugin 跳过执行jar包文件即可,
<configuration>
<classifier>exec</classifier>
<skip>true</skip>
</configuration>
完整内容:
<plugins>
<!--Maven打包插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
<skip>true</skip>
</configuration>
</plugin>
<!--编译跳过测试文件检查的生命周期-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
第二步:测试
再次install打包编译代码,即可成功打包了,如下图:、
跳过执行包后,依赖包就不会被覆盖了,
如下图:
好了,关于 Intellij IDEA install打包时,程序包com....common.utils不存在 或者 找不到符号 的解决办法 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。
作 者: | 华 仔 |
联系作者: | who.seek.me@java98k.vip |
来 源: | CSDN (Chinese Software Developer Network) |
原 文: | https://blog.csdn.net/Hello_World_QWP/article/details/135824114 |
版权声明: | 本文为博主原创文章,请在转载时务必注明博文出处! |