0
点赞
收藏
分享

微信扫一扫

War引入本地Jar后仍然报_包XXX不存在 groupId和artifactId重复惹的祸

眸晓 2022-11-25 阅读 82

笔者在给Springboot工程打包war时,尝试多种本地jar引入方法,均未奏效并明确引入方法有验证过(验证的本地jar仅一个,并且groupId和artifactId不与其它dependency中重复。这点很重要,也是本文的重点,笔者错误原因就在这里)。

本文基于小伙伴已首次本地代码(不含引入本地jar包)已经编译生成.war文件并上传服务器tomcat webapp目录后正常运行。不再对本地代码打war包上传服务器多做赘述,请自行百度学习验证通过。

笔者工程中应用某硬件厂商的jar包,估计硬件厂商对于软件部署还停留在早期eclipse的jar包引入方式开发,故多个jar引入时没有出错。而maven的dependency中对于重复的groupId和artifactId仅引入最后一次的标签中的jar。例如,

<dependency>
<groupId>com.lib.bx6</groupId>
<artifactId>com.lib.bx6</artifactId>
<version>0.5.1-SNAPSHOT6</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/bx06.message-0.6.0-SNAPSHOT.jar</systemPath>
</dependency>
<dependency>
<groupId>com.lib.bx6</groupId>
<artifactId>com.lib.bx6</artifactId>
<version>0.5.1-SNAPSHOT6</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/bx06-0.6.5-SNAPSHOT.jar</systemPath>
</dependency>

在idea IntelliJ本地运行时,只要jar有在File - Project Structure - Library中有添加即可正常运行。但是,打war包要引入这两个jar时,对于bx06.messagebx06.message-0.6.0-SNAPSHOT.jar这个jar的内容就被覆盖了,报错的内容时这个包里的类不存在,或Symbol未声明等。仅有最后一次引入的bx06-0.6.5-SNAPSHOT.jar生效。

解决方法:

笔者首先查systemPath想多定义jar。失败,如果有小伙伴解决欢迎留言。

其次,改version,例如0.5.1-SNAPSHOT6-2。失败,依旧只有最后一个生效。

最后,改artifactId,例如com.lib.bx6.2。成功。借此给大家参考。

(引入本地jar,相同的groupId和artifactId会导致dependency覆盖,仅最后一个生效)


举报

相关推荐

程序包xxx不存在

0 条评论