解决Unexpected record signature 0X9maven 资源过滤

news2025/2/28 13:57:06

解决Unexpected record signature: 0X9|maven 资源过滤

记录问题:我们有个需求是根据excel模版导出一个excel表。我们的项目是SpringBoot,所以理所当然的把这个模版文件放到了,resources文件夹中。但是在导出文件的时候却遇到了invalid code lengths setUnexpected record signature: 0X9的错误。

如何解决?

先说如何解决吧。两种方案任意一种即可解决该问题。

  • 方法一

pom.xml<build>中添加这一部分。

<build>
    <resources>
        <!--
                这段配置的作用是将 src/main/resources 目录下的所有文件复制到构建目录中,
                但排除了 .xlsx、.xls、.zip 和 .pdf 文件,并在复制过程中启用了资源过滤。
            -->
        <resource>
            <directory>src/main/resources</directory>
            <!-- 表示将包含哪些文件 **/* 表示所有子目录及所有文件 -->
            <includes>
                <include>**/*</include>
            </includes>
            <!-- 表示将排除哪些文件  -->
            <excludes>
                <exclude>**/*.xlsx</exclude>
                <exclude>**/*.xls</exclude>
                <exclude>**/*.zip</exclude>
                <exclude>**/*.pdf</exclude>
            </excludes>
            <!-- 开启资源过滤 -->
            <filtering>true</filtering>
        </resource>
        <!--
               这段配置的作用是将 src/main/resources 目录下的 .xlsx、.xls、.zip 和 .pdf 文件,复制到构建目录中并在复制过程中关闭资源过滤。
            -->
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.xlsx</include>
                <include>**/*.xls</include>
                <include>**/*.zip</include>
                <include>**/*.pdf</include>
            </includes>
            <!-- 关闭资源过滤 -->
            <filtering>false</filtering>
        </resource>
    </resources>
</build>
  • 方式二

使用maven-resources-plugin插件来帮我们在进行资源过滤时,不要对指定扩展名的文件进行过滤。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <!--排除的不需要资源过滤的文件后缀名列表-->
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
            <nonFilteredFileExtension>xls</nonFilteredFileExtension>
            <nonFilteredFileExtension>zip</nonFilteredFileExtension>
            <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>

资源过滤

资源过滤,他是要干什么?

占位符替换maven在对构建项目的时候如何遇到文件中有${env}这种格式的内容的时候,他就会在环境变量中或者项目变量中去寻找对应的值来进行替换。

举例:像db这种配置通常为了安全,我们并不会直接将明文直接写在配置文件中,通常我们都是通过环境变量的方式来进行替换(虽然实际使用上并不是在打包环节进行替换,但是使用这种方式也可以达到目的)。

结论

为什么会出现文件损坏等这种问题呢?

maven,项目在构建并且我们开启了资源过滤的时候,maven会去扫描所有资源文件中的内容,并且遇到占位符后会对其进行替换(这里其实还会对文件进行压缩等安全性的操作)。所以可能会对我们的一些资源文件造成损坏的问题,从而导致报错。

通过在pom.xml中对资源文件进行一部分的排除过滤后,使得原文件可以跳过资源过滤从而保证文件的完整性。

补充

遇到一个奇怪的问题🤔。

我在Idea里面直接启动我的SpringBoot的时候,想使用这个资源过滤来对一个文件进行占位符替换的时候,发现他不生效。

我在pom.xml中添加了一个self.admin的变量,想要通过这个变量来对文件中的一个占位符来进行替换。

pom.xml

 <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
     <java.version>1.8</java.version>
     <resource.delimiter>${}</resource.delimiter>
     <self.admin>111</self.admin>
</properties>

原文件

${self.admin}

${pom.name}

直接启动SpringBoot项目后生成的target目录,发现并没有替换成功。

image-20240113190812321

但是我使用mvn package进行打包的时候,却发现可以正常替换成功。

image-20240113232531299

这是为什么呢?我感觉这里其实也走了一部分maven的编译。因为我们在修改pom.xml的一些plugin配置的时候,他也会生效。这里我是个🤔。

有解决方案,那就是强制让idea使用maven在对项目进行编译与运行。在setting中找到该选项Delegate build and run actions to Maven并勾选他。

image-20240113232531299

再次运行SpringBoot项目,发现他成功替换了。

image-20240113232531299

思考?🤔

为什么idea识别到是maven项目后不强制使用maven来构建项目呢?

我的想法

  • 通常我们有一些插件并不需要在编译是使用,像有一些jib-maven-plugin构建docker镜像。
  • 使用maevn编译可以会慢一些。

所有idea并没有默认勾选这个设置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1382537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于tex中的表格设置

文章目录 控制表格列宽和行高控制表格列宽的同时实现居中tex中多表格排列单元格的合并与分割对单个单元格进行操作 控制表格列宽和行高 将下面的代码放在table环境内&#xff0c;放在tabular环境外 调整表格宽度和高度&#xff1a; \resizebox{\textwidth}{2cm}{%第一个{}是表…

Linux之静态库和动态库

目录 一、前言 二、对于库的理解 三、静态库 四、动态库 五、动静态库的加载 一、前言 在之前&#xff0c;我们讲了静态库和动态库&#xff0c;详情请跳转&#xff1a;静态库和动态库 下面我们将从工程师的角度&#xff0c;去了解静态库和动态库的形成过程&#xff0c;以…

EndNote快速上手

前言&#xff1a;用EndNote主要就是为了方便管理文章引用的文献&#xff0c;所以本篇就是针对EndNote在文章中引用文献需要的技巧&#xff0c;然后本文用的是EndNoteX9。 EndNote快速上手 创建文献资料库创建文献分组导入文献手动输入文件导入在线搜索 修改文献信息去重文献删除…

火出圈的ChatGPT,在地学、地球科学领域的强大应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

一篇文章带你了解Redis的发展史

Redis 是一个开源的内存数据存储和处理系统&#xff0c;它在过去的几十年中经历了重大的发展和演进。以下是 Redis 的发展历程概述&#xff1a; 早期阶段&#xff08;2000年代初至中期&#xff09;&#xff1a;在这个时期&#xff0c;网站的访问量通常较低&#xff0c;单个数据…

在Colab上测试Mamba

我们在前面的文章介绍了研究人员推出了一种挑战Transformer的新架构Mamba 他们的研究表明&#xff0c;Mamba是一种状态空间模型(SSM)&#xff0c;在不同的模式(如语言、音频和时间序列)中表现出卓越的性能。为了说明这一点&#xff0c;研究人员使用Mamba-3B模型进行了语言建模…

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql

目录 打印MyBatis的日志配置&#xff1a; 灰度发布:指发布环境&#xff0c;比如发布环境有200台机器&#xff0c;发布的时候是一批一批的机器的发布 2.删除与修改 使用Results注解&#xff0c;这样就和上面的别名一个意思&#xff0c;column是数据库的列 自动转驼峰&#…

ubuntu的动图截屏怎么做

在Ubuntu系统中&#xff0c;你可以通过以下步骤来截取动图&#xff08;即屏幕录制并转换为GIF格式&#xff09;&#xff1a; 1,首先&#xff0c;你需要安装一些必要的工具。打开终端并输入以下命令以安装gtk-recordmydesktop&#xff08;用于录制屏幕&#xff09;、mplayer&am…

【快速解决】保姆级Anaconda安装教程

目录 第一步 ​编辑第二步 ​编辑第三步 第四步 第五步 第六步 ​编辑 第七步 第八步 第九步 第一步 在anaconda清华大学开源软件镜像站下载anaconda。点击这里进入 我这里选的是windows-x86_64。 第二步 下载好以后进行安装 第三步 第四步 第五步 选择…

VR全景博物馆——让博物馆“火起来”

不管是十里洋场的繁华、还是红岩革命的英勇&#xff0c;博物馆一直都拥有着丰富的历史沉淀和文化底蕴&#xff0c;通过VR全景拍摄制作技术&#xff0c;我们可以随时随地穿越空间&#xff0c;去切身体验那些历史人物的经历。 传统的实体博物馆受限于地理位置和布局&#xff0c;使…

Google cloud认证必备

Google cloud认证 ​这个可以走代理合作 ​价格优美 ​通过保证

线上问题整理

JVM 案例 案例一&#xff1a;服务器内存不足&#xff0c;影响Java应用 问题&#xff1a; 收到报警&#xff0c;某Java应用集群中一台服务器可用内存不足&#xff0c;超过报警阈值。 排查过程&#xff1a; 首先&#xff0c;通过Hickwall查看该应用各项指标&#xff0c;发现无论…

如何创建一个pytorch的训练数据加载器(train_loader)用于批量加载训练数据

Talk is cheap,show me the code! 哈哈&#xff0c;先上几段常用的代码&#xff0c;以语义分割的DRIVE数据集加载为例&#xff1a; DRIVE数据集的目录结构如下&#xff0c;下载链接DRIVE,如果官网下不了&#xff0c;到Kaggle官网可以下到&#xff1a; 1. 定义DriveDataset类&…

Qt OpenGL - 网格式的直角坐标系

Qt OpenGL - 网格式的直角坐标系 引言一、绘制3D网格1.1 绘制平行于y轴的线段1.2 绘制平行于三个轴的线段1.3 绘制不同的3D网格 二、网格式的直角坐标系三、参考链接 引言 在OpenGL进行3D可视化&#xff0c;只绘制三条坐标轴略显单薄&#xff0c;而绘制网格形式的坐标系则能更清…

更换为mainwindow.ui更新工程架构

文章目录 前言一、新建带mainwindow.ui的工程1.新建工程2. 添加工程模块添加opencv的库3.添加资源3.1工程上添加资源3.2引用资源 4.添加曲线文件4.1 复制关键文件到新工程4.2 新进显示曲线的ui带.h的为了方面名字取一样4.3添加曲线显示控件4.4 添加工具 5. 添加曲线.h文件内容6…

大数据深度学习ResNet深度残差网络详解:网络结构解读与PyTorch实现教程

文章目录 大数据深度学习ResNet深度残差网络详解&#xff1a;网络结构解读与PyTorch实现教程一、深度残差网络&#xff08;Deep Residual Networks&#xff09;简介深度学习与网络深度的挑战残差学习的提出为什么ResNet有效&#xff1f; 二、深度学习与梯度消失问题梯度消失问题…

Apache-Common-Pool2中对象池的使用方式

最近在工作中&#xff0c;对几个产品的技术落地进行梳理。这个过程中发现一些朋友对如何使用Apache的对象池存在一些误解。所以在写作“业务抽象”专题的空闲时间里&#xff0c;本人觉得有必要做一个关于对象池的知识点和坑点讲解。Apache Common-Pool2 组件最重要的功能&#…

nvm安装高版本Nodejs报错

文章概叙 之前使用1.1.17版本的nvm&#xff0c;切换使用18的Nodejs的时候报错&#xff0c;经过短暂的思考&#xff0c;决定使用1.1.12的nvm的无聊故事。 吐槽 今天的故事比较无奈&#xff0c;由于某些原因&#xff0c;现在需要做rn的开发&#xff0c;至于为啥不是flutter&am…

《工具录》dig

工具录 1&#xff1a;dig2&#xff1a;选项介绍3&#xff1a;示例4&#xff1a;其他 本文以 kali-linux-2023.2-vmware-amd64 为例。 1&#xff1a;dig dig 是域名系统&#xff08;DNS&#xff09;查询工具&#xff0c;常用于域名解析和网络故障排除。比 nslookup 有更强大的功…

一张图总结架构设计的40个黄金法则

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;很多小伙伴拿到非常优质的架构机会&#xff0c;常常找尼恩求助&#xff1a; 尼恩&#xff0c;我这边有一个部门技术负责人资深架构师的机会&#xff0c;非常难得&#xff0c; 但是有一个大厂高P在抢&#xff0…