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

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

在这里插入图片描述
2. 既然知道原因了,那么我们就好解决了,那么怎么解决呢?其实非常简单,我们只需要将加个configuration标签,并在里面嵌套加入一个skip子标签,并将skip的值设为true,意思也就是跳过这个插件的配置。具体效果如下图所示:

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

GitHub 加速计划 / ma / maven
25
0
下载
Maven: Apache Maven是一个开源的项目管理和构建工具,主要用于Java项目。适合需要自动化项目构建和依赖管理的开发者。特点包括约定优于配置、易于使用和社区驱动。
最近提交(Master分支:3 个月前 )
575ad371 As it uses now String.format that produces different decimal separator based on local, most notable DE --- https://issues.apache.org/jira/browse/MNG-8454 1 天前
5f19dae0 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.26.3 to 3.27.0. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.26.3...assertj-build-3.27.0) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- https://issues.apache.org/jira/browse/MNG-8458 1 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐