spring-boot项目打包时候出现boot-inf文件夹的问题

2023-11-15

前言

这问题不是我发现的。。刚好碰到而已,下面几位同仁都遇到过:

spring-boot子模块打包去掉BOOT-INF文件夹

摘抄如下:

1.spring-boot maven打包,一般pom.xml文件里会加

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
这样打的jar里会多一个目录BOOT-INF。

2.引起问题,程序包不存在。

3.解决办法,如果A子模块包依赖了B子模块包,在B子模块的pom文件,加入

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>
--------------------- 
作者:zsywangyi 
来源:CSDN 
原文:https://blog.csdn.net/zsywangyi/article/details/78319130 
版权声明:本文为博主原创文章,转载请附上博文链接!

顺便将评论放一放:
在这里插入图片描述

优秀,估计这方法是可行的。

还有其他文章可以参考:
springboot打包部署的那些事

这篇也详细,抄录如下:

一、打成jar部署
利用springboot的插件打包

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
打jar的小细节
当有引入本地jar配置,如下图


pom.xml配置如下

<dependency>
            <groupId>eis_protobuf</groupId>
            <artifactId>eis_protobuf</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/eis_protobuf.jar</systemPath>
        </dependency>
springboot-maven-plugin打包的第一级目录为Boot-INF,如果不做任何配置,直接mvn clean package会发现无法把本地的jar打进Boot-INF中,则此时要做如下配置

方法一
在pom.xml的resources节点添加如下内容

<resource>
                <directory>lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
ps: 如果遇到一些外部配置文件比如mybatis的mapper文件或者activiti生成器的json文件,则也要把相应的文件打进resources中,否则项目启动会因找不到配置文件,而报错,配置文件如下

<resource>
                <directory>${basedir}/src/main/java</directory>
                <filtering>false</filtering>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>templates/**</exclude>
                    <exclude>static/**</exclude>
                </excludes>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                    <include>**/*.yaml</include>
                    <include>**/*.properties</include>
                    <include>**/*.key</include>
                    <include>**/*.des</include>
                    <include>**/*.template</include>
                    <include>**/*.json</include>
                </includes>
            </resource>
方法二
在spring-boot-maven-plugin插件中设置includeSystemScope参数

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
        <includeSystemScope>true</includeSystemScope>
      </configuration>
    </plugin>
  </plugins>
</build>
二 把sprinboot部署到外部tomcat
1、修改打包方式,把jar改成war,改成如下配置

<packaging>war</packaging>
2、引入tomcat依赖jar,scope范围为provided,并排除springboot内嵌的tomcat依赖jar,其实不排除也没关系,不影响项目运行

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
3、修改打包插件,不使用spring-boot-maven-plugin插件打包,因为这个打包插件会把jar打包在Boot-INF目录下导致别的项目引用时引用不到,此时改用maven-war-plugin打包,具体配置如下

<plugin>
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.3.2</version>
         <configuration>
            <source>1.8</source>
            <target>1.8</target>
         </configuration>
      </plugin>
4、修改启动类,启动类继承SpringBootServletInitializer,并重写configure方法

@SpringBootApplicationpublic class SpringbootDemo extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootDemo.class);
    }

    public static void main(String[] args) {
        new SpringApplicationBuilder(SpringbootDemo.class).web(true).run(args);
    }
}
原文发布于微信公众号 - Linyb极客之路(gh_c420b2cf6b47)

原文发表时间:2018-09-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于 2018-09-27

好了,可惜我用的gradle,而打包的就是这样的:
在这里插入图片描述

那么解决方案是什么?

参考一下:
Grails 3 war -Inline plugin issues

防止被墙看不到,下面是答案:
在这里插入图片描述

然后不行,不说repackge是srping boo t1.0的产物,就是现在将bootJar.enable=false bootWar.enable=false都禁用也没用的。

尝试用gradle的shadow插件
请具体看:
shadow官网

注意,目前为止要用到gradle5,我已经升级了。。请自行升级。然后build可能会出现:
在这里插入图片描述

要启用zip64:
在这里插入图片描述
打包成功。可以看到:
在这里插入图片描述

打包后出现问题:
在这里插入图片描述

缺少spring.facxxx文件。。嗯,其实,我们可以在源代码里面看到
在这里插入图片描述

在autoconfigure里面。。好了,我们找到自己版本号的这个文件,这样找:

idea中看
在这里插入图片描述

然后找到:
在这里插入图片描述

解压缩复制里面的spring.faxxx文件

在这里插入图片描述

放到
在这里插入图片描述

打包:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring-boot项目打包时候出现boot-inf文件夹的问题 的相关文章

随机推荐

  • 概述计算机网络五层原理体系结构中各层的功能_请收好这一份详细清晰的计算机网络基础学习指南...

    点击上方 Java后端 选择 设为星标 优质文章 及时送达 来源 简书 作者 Carson Ho 链接 jianshu com p 45d27f3e1196 前言 计算机网络基础是研发 运维工程师都需掌握的知识 但往往会被忽略 今天 我将献
  • 【无标题】苹果手机连接罗技鼠标和蓝牙键盘的设置方法

    苹果手机连接罗技鼠标和蓝牙键盘的设置方法如下 iPhone手机打开鼠标设置的路径 设置 辅助功能 触控 辅助触控 打开 请按以下步骤操作 第一步 第二步 第三步 第四步 到这一步以后 屏幕上会出现一个半透明小圆球 同时也可以蓝牙连接鼠标 连
  • 复习之web服务器--apache

    PS Vim复制小技巧 一 实验环境 两台虚拟机 nodea nodeb 配置ip 搭建软件仓库 关闭selinux root ftp Desktop hostnamectl set hostname nodea westos org ro
  • 多文件上传关于input type=file元素

    我们都知道 html5中有个input type file元素 用该元素可以实现页面上传文件的功能 但一般的做法只是简单的在表单中操作 我来研究一下深层东西 想要了解它 就要知道它的内置对象 files 页面上写一个input 然后选俩个图
  • 【Pytorch with fastai】第 16 章 :训练过程

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • linux-网站服务

    一 概念 1 框架结构 LAMP linux apache mysql PHP 系统 服务器程序 数据管理软件 中间软件 二 静态站点 1 安装Apache 1 root localhost yum y install httpd 安装 r
  • CF Round 481 (Div. 3)--D. Almost Arithmetic Progression(思维)

    Polycarp likes arithmetic progressions A sequence a1 a2 an is called an arithmetic progression if for each i 1 i
  • opencv中的merge函数

    文中例子已修改正确 具体原因见评论区 该函数用来合并通道 原型 版本一 void merge const Mat mv size t count OutputArray dst 第一个参数是图像矩阵数组 第二个参数是需要合并矩阵的个数 第三
  • 置信区间计算方法

    文章目录 1 均值的置信区间 2标准差的置信区间 3偏度的置信区间 4 变异系数的置信区间 5参考文献 画图加个阴影 需要用到置信区间的计算方法 SPSS和R应该都能算 这里简单罗列下三阶统计的计算方法 1 均值的置信区间 以前保存的一个表
  • [技术发展-12]:高级研修班-智能汽车-新能源汽车动力系统关键技术

    作者主页 https blog csdn net HiWangWenBing 文章出处 https blog csdn net HiWangWenBing article details 118196111 锂电池和磷酸铁锂电池各有千秋 磷
  • 解析WINDOWS中的DLL文件---经典DLL解读

    在Windows世界中 有无数块活动的大陆 它们都有一个共同的名字 动态链接库 现在就走进这些神奇的活动大陆 找出它们隐藏已久的秘密吧 初窥门径 Windows的基石 随便打开一个系统目录 一眼望去就能看到很多扩展名DLL的文件 这些就是经
  • 基金股票投资调研

    1 本金不多 是买股票还是买基金 十万以上的话 可以买股票 十万以下 买基金 好股票股价都很贵 买一手一两万太正常 你不到十万块 买不了几手 做到行业分散很难 股票需要资金量 而基金往往一块钱就能买 2 可转债与股票 股票 1手 即是100
  • FbxSDK官网文档阅读总结

    FbxSDK官网文档地址 传送门 原文 Normally an FBX application needs only one SDK manager object Most FBX applications need only one sc
  • mysql ---- 全文索引:中文语义分词检索

    转 https www cnblogs com huanzi qch p 15238604 html 介绍 通常情况下 全文检索引擎我们一般会用ES组件 传送门 SpringBoot系列 ElasticSearch 但不是所有业务都有那么大
  • OpenCV Gabor滤波器实现纹理提取与缺陷分析

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 一 Gabor滤波器介绍 Gabor滤波器是OpenCV中非常强大一种滤波器 广泛应用在纹理分割 对象检测 图像分维 文档分析 边缘检测 生物特征识别 图像编码与内容描述
  • C语言中的“三体”大佬们知道是什么吗? —— 结构体、枚举、联合体

    目录 前言 结构体 基本概念 结构体类型的声明 结构的声明 特殊的声明 结构的自引用 结构体变量的定义和初始化 结构体的对齐规则 为什么要内存对齐 修改默认对齐数 修改默认对齐数的预处理命令 实际例子 结构体传参 结构体实现位段 位段的填充
  • 渗透技巧——手动判断注入点(思维导图)

    在渗透测试过程中 在web存在较复杂的情况下需要有针对性的先进性手动测试是否存在注入点 总结如下手动测试思维导图 如下思维导图针对大多数有注入点的场景
  • 【java实现二叉树的各种遍历方式】

    二叉树的各种遍历方式 通过递归方式 可实现二叉树的层级遍历 先序 中序 后序等遍历方式 package com ykq import java util ArrayList import java util List author ykq
  • nvidia 显卡驱动

    nvidia settings ERROR NVIDIA driver is not loaded ERROR Unable to load info from any available system 然后查看 home drive 发现
  • spring-boot项目打包时候出现boot-inf文件夹的问题

    前言 这问题不是我发现的 刚好碰到而已 下面几位同仁都遇到过 spring boot子模块打包去掉BOOT INF文件夹 摘抄如下 1 spring boot maven打包 一般pom xml文件里会加