900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > maven多模块项目:程序包找不到 找不到符号

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

时间:2024-05-10 07:18:30

相关推荐

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可以找到这个模块中的类,但是编译时报错,程序包不存在。

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

修改:

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

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

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

结论:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。