如何解决spring-boot项目使用maven打包时出现BOOT-INF文件夹的问题?

时间:2024-04-03 18:03:55

  这周在开发项目时因为需要把自己的项目打成一个jar包提供给其它项目调用,所以毫无疑问打包过程中我使用到了maven clean package这个命令,当打包成功后并在本地的一个项目中引入这个jar包对应的maven依赖后,我发现了一个奇怪的问题,大家可以看下下面这张图片:
如何解决spring-boot项目使用maven打包时出现BOOT-INF文件夹的问题?
  大家从上图可以看到那个jar包我已经引入了,但当我调用里面的类时不管我按了多少次import class这个类始终呈红色。那么到底是什么原因导致的呢?面对这种情况,我仔细比对了这个jar包与其它jar包里面结构的区别,发现这个jar包中居然多了一个BOOT-INF文件夹,我猜这就是导致这个问题产生的罪魁祸首吧。于是照着自己的思路继续走下去,既然打包的jar包中有个BOOT-INF文件夹,那么就想办法如何把它去掉。经过谷歌搜索再加上自己的理解整理出了一套解决方案,大家且听我详细分析。

  1. 首先jar中多了这个BOOT-INF文件夹的原因,主要是因为我们在maven的pom文件中加入了spring-boot-maven-plugin这个插件,如下所示:

如何解决spring-boot项目使用maven打包时出现BOOT-INF文件夹的问题?
2. 既然知道原因了,那么我们就好解决了,那么怎么解决呢?其实非常简单,我们只需要将加个configuration标签,并在里面嵌套加入一个skip子标签,并将skip的值设为true,意思也就是跳过这个插件的配置。具体效果如下图所示:

如何解决spring-boot项目使用maven打包时出现BOOT-INF文件夹的问题?
3、修改完pom文件后,接下来重新运行一次maven clean install命令就可以了。下面我贴出重新打包后的效果图 。
如何解决spring-boot项目使用maven打包时出现BOOT-INF文件夹的问题?
  大家可以看到BOOT-INF文件夹已经不见了,好的,大功告成!有人可能还会问为什么加个configuration标签和skip标签就可以了呢?具体原因大家可以自行搜索理解下,这里我就不展开分析了。好的,今天就讲到这里。
  参考博客: spring-boot子模块打包去掉BOOT-INF文件夹