maven多模块项目:程序包找不到,找不到符号

问题描述:

springboot搭建的多模块项目,maven管理,由两个模块组成,一个模块(order)依赖另一个模块(user)的jar包,但是依赖模块启动后报错,order模块报错:user下的程序包不存在;找不到符号

错误复现: 

User本身也是一个服务,他的pom文件中的插件设置是这样的。

User可以正常启动服务,并且可以正常install到本地库中。

然后编译Order服务,Order代码依赖User。以下是问题:

打开项目structure,在order的依赖包里也能找到user的jar包,但是看着像个文件夹。说明依赖包被引入了,但是order就是识别不了user里的类。

原因:

Springboot项目打包编译时,会生成两种jar包,一种是普通jar,另一种是可执行jar。这两种jar名称相同,如果不配置,会先生成普通jar,再生成可执行jar。可执行jar会覆盖普通jar。而user无法依赖可执行jar,所以idea可以找到这个模块中的类,但是编译时报错,程序包不存在。

https://www.cnblogs.com/dayu123/p/16486340.html 如何生成不包含依赖包(不可执行的)普通jar包呢?

修改:

如下图,在被依赖的user代码中,依赖的插件里加入exec。

 

样会生成两个jar包,如下,一个普通的jar,一个可执行(包含了相关依赖)的jar。

 

重新对被依赖模块clean install,然后对依赖模块clean compile。此时项目成功运行。

结论:

在多模块项目中,如果一个模块a依赖模块b,a和b本身又是微服务,插件如图加上exec,这样既可以生成可执行jar包,又可以生成普通jar包以供其他项目引入。如果b不是微服务,可以直接把插件删掉。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值