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

发布时间:2022-03-01 12:18:45 作者:yexindonglai@163.com 阅读(79)

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

问题是这样的,因为项目中用到了自定义的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包已经打进去了

关键字Maven