解决maven打包时手动添加的依赖jar包打不进去的情况
【摘要】
这个问题忙了我一天多的时间,因为太棘手了, 所以记录下来,防止忘记;
问题是这样的,因为项目中用到了自定义的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 标签下面加入以下代码即可
-
-
<plugin>
-
<groupId>org.apache.maven.plugins</groupId>
-
<artifactId>maven-war-plugin</artifactId>
-
<version>2.6</version>
-
<configuration>
-
<webResources>
-
<resource>
-
<!-- 源jar包所在位置, ${project.basedir} 表示当前目录的路径 -->
-
<directory>${project.basedir}/lib</directory>
-
-
<!-- 打包后的目标文件夹 ,也就是你打包后的war包或者jar包的目录 -->
-
<targetPath>WEB-INF/lib</targetPath>
-
<filtering>false</filtering>
-
<includes>
-
<!-- 把所有的jar包都打进去 -->
-
<include>**/*.jar</include>
-
</includes>
-
</resource>
-
</webResources>
-
</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)