解决maven打包时手动添加的依赖jar包打不进去的情况

举报
IT 叶新东老师 发表于 2021/12/22 01:05:19 2021/12/22
【摘要】 这个问题忙了我一天多的时间,因为太棘手了, 所以记录下来,防止忘记; 问题是这样的,因为项目中用到了自定义的jar包,也就是远程仓库里没有的jar,所以想要引用就必须自己手动添加进去,在idea中运行是没问题的,但是打包到测试环境后发现经常报错 java.lang.NoClassDefFoundError   和...

这个问题忙了我一天多的时间,因为太棘手了, 所以记录下来,防止忘记;

问题是这样的,因为项目中用到了自定义的jar包,也就是远程仓库里没有的jar,所以想要引用就必须自己手动添加进去,在idea中运行是没问题的,但是打包到测试环境后发现经常报错

java.lang.NoClassDefFoundError   和  ClassNotFoundException 异常,经过一查找才发现是因为打包的时候依赖jar包没打进去;

一开始是在项目中导入了本地的jar包。发现没用

网上找到问题说是因为scope指定了system域是系统范围使用的,在打包时不会将这个空间的包打进lib目录下;

然后也在项目中手动添加了这个依赖jar包;发现还是不行

但是不管是mvn install 还是mvn package 打包后,在war包里的 WEB-INF/lib 目录下都没看到这个jar包

根据这个问题,网上尝试了很多方法都没用,最后自己在一个网站上找到了方法
 

解决方案

1、在pom.xml文件的 build 标签下面加入以下代码即可


  
  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-war-plugin</artifactId>
  4. <version>2.6</version>
  5. <configuration>
  6. <webResources>
  7. <resource>
  8. <!-- 源jar包所在位置, ${project.basedir} 表示当前目录的路径 -->
  9. <directory>${project.basedir}/lib</directory>
  10. <!-- 打包后的目标文件夹 ,也就是你打包后的war包或者jar包的目录 -->
  11. <targetPath>WEB-INF/lib</targetPath>
  12. <filtering>false</filtering>
  13. <includes>
  14. <!-- 把所有的jar包都打进去 -->
  15. <include>**/*.jar</include>
  16. </includes>
  17. </resource>
  18. </webResources>
  19. </configuration>

加好后的代码如下 

 

2、因为有了  <directory>${project.basedir}/lib</directory>  ,所以我们需要在当前项目下建立一个lib文件夹,然后把需要打包的jar放进去

 

3、添加这段代码后再执行mvn packge 或者mvn install。我们可以看到,jar包已经打进去了

文章来源: yexindong.blog.csdn.net,作者:java叶新东老师,版权归原作者所有,如需转载,请联系作者。

原文链接:yexindong.blog.csdn.net/article/details/111560492

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。