解决Unexpected record signature 0X9maven 资源过滤

解决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.mzph.cn/news/620256.shtml

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

相关文章

二极管限幅电路理论分析,工作原理+作用

一、限幅是什么意思&#xff1f; 限幅也就是&#xff0c;将电压限制在某个范围内&#xff0c;去除交流信号的一部分但不会对波形的剩余部分造成影响。通常来说&#xff0c;限幅电路主要是由二极管构成&#xff0c;波形的形状取决于电路的配置和设计。二、限幅电路工作原…

场效应管在电路中如何控制电流大小

场效应管的概念 场效应晶体管&#xff08;FieldEffectTransistor缩写&#xff08;FET&#xff09;&#xff09;简称场效应管。主要有两种类型&#xff08;juncTIonFET—JFET&#xff09;和金属-氧化物半导体场效应管&#xff08;metal-oxidesemiconductorFET&#xff0c;简称M…

9.5.1 函数模板特化

函数模板 有了泛化版本比较函数&#xff0c;我们可以比较两个整数&#xff0c;两个字符&#xff0c;两个指针 6~10行&#xff0c;是一个函数模板 13~16行&#xff0c;都可以得到正常结果 22行&#xff0c;得到的结果是&#xff0c;"A001" < "A000", …

【k8s】Kubernetes 声明式 API、命令式

1. 资源管理方式&#xff1a; 1>. 命令式对象管理∶直接使用命令去操作kubernetes资源 kubectl run nginx-pod --imagenginx:1.17.1 --port802>. 命令式对象配置∶通过命令配置和配置文件去操作kubernetes资源 kubectl create/patch -f nginx-pod.yaml3>. 声明式对…

【OpenGauss源码学习 —— 执行器(execMain)】

执行器&#xff08;execMain&#xff09; 概述文件内容作用执行的操作主要函数概述 部分函数详细分析ExecutorStart 函数standard_ExecutorStart 函数 ExecutorRun 函数standard_ExecutorRun 函数 ExecutorFinish 函数standard_ExecutorFinish 函数 ExecutorEnd 函数standard_E…

京东宣布启动鸿蒙原生应用开发,全力支持鸿蒙生态 | 百能云芯

华为常务董事、终端BG CEO、智能汽车解决方案BU董事长余承东于1月10日在微博上发布了一条令人振奋的消息&#xff1a;京东即将启动鸿蒙原生应用的开发。这一消息在科技圈掀起了不小的波澜&#xff0c;也为鸿蒙系统的发展注入了新的动力。 京东集团首席执行官兼执行董事许冉和余…

SpringBoot读取配置文件中的内容

文章目录 1. 读取配置文件application.yml中内容的方法1.1 Environment1.2 Value注解1.3 ConfigurationProperties 注解1.4 PropertySources 注解&#xff0c;获取自定义配置文件中的内容&#xff0c;yml文件需要自行实现适配器1.5 YamlPropertiesFactoryBean 加载 YAML 文件1.…

SpringBoot知识03

1、多模块项目无法启动&#xff0c;报错Failed to execute goal on project*: Could not resolve dependencies for project

强化学习应用(七):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个价值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

Python如何免费调用微软Bing翻译API

一、引言 现在免费的机器翻译越来越少了&#xff0c;随着有道翻译开始收费&#xff0c;百度降低用户的免费机器翻译额度(目前只有实名认证过的高级用户才能获得100万字符的免费翻译额度)&#xff0c;而亚马逊、腾讯等机器翻译调用相对比较麻烦&#xff0c;需要下载各种插件包&…

【IDEA】瑞_IDEA模版注释设置_IDEA自动生成注释模版(详细图文步骤)

文章目录 1 概要2 类的自定义模版注释3 自定义模版注释3.1 方法的自定义模版注释3.2 属性的自定义模版注释 &#x1f64a; 前言&#xff1a;在Java开发中&#xff0c;注释具有不可或缺的重要性&#xff0c;注释负责解释代码&#xff0c;能帮助开发人员深入理解代码的逻辑和功能…

关联规则分析(Apriori算法2

目录 1.核心术语&#xff1a;2.强关联规则&#xff1a;小结&#xff1a; 1.核心术语&#xff1a; 支持度&#xff08;Support&#xff09;&#xff1a;指项集出现的频繁程度&#xff08;相当于项集出现的概率&#xff09; 最小支持度有绝对值和占比两种表示方式 置信度&#…

Xtuner大模型微调

Xtuner大模型微调 一、课程笔记 文档链接&#xff1a;https://github.com/InternLM/tutorial/blob/main/xtuner/README.md 视频链接&#xff1a; https://www.bilibili.com/video/BV1yK4y1B75J/ 大模型微调 大模型的训练利用了各类数据&#xff0c;可以说是一个通才&#xff…

数据仓库(2)-认识数仓

1、数据仓库是什么 数据仓库 &#xff0c;由数据仓库之父比尔恩门&#xff08;Bill Inmon&#xff09;于1990年提出&#xff0c;主要功能仍是将组织透过资讯系统之联机事务处理(OLTP)经年累月所累积的大量资料&#xff0c;透过数据仓库理论所特有的资料储存架构&#xff0c;做…

高级路由技术案例

文章目录 案例项目一&#xff1a;1、静态ECMP和浮动静态路由配置实验2、浮动静态路由配置 案例项目二&#xff1a;使用filter-policy过滤路由案例项目三&#xff1a;IS-IS基本配置案例项目四&#xff1a;OSPF基本配置案例任务一&#xff1a;OSPF单区域配置案例任务二&#xff1…

开源 UI 组件库和开发工具库概览 | 开源专题 No.59

ant-design/ant-design Stars: 87.9k License: MIT Ant Design 是一个企业级 UI 设计语言和 React UI 库。 为 Web 应用程序设计的企业级 UI。提供一套高质量的开箱即用的 React 组件。使用可预测静态类型编写 TypeScript 代码。包含完整的设计资源和开发工具包。支持数十种语…

小程序基础学习(组件传参)

原理&#xff1a;通知在组件标签中传递参数已达到传参的目的 在组件的js的 properties中接受传递来的参数 然后在页面是展示这些数据 源码&#xff1a; <!--components/my-info/my-info.wxml--> <view class"title"> <text class"texts"&g…

Java--RSA非对称加密的实现(使用java.security.KeyPair)

文章目录 前言实现步骤测试结果 前言 非对称加密是指使用不同的两个密钥进行加密和解密的一种加密算法&#xff0c;调用方用使用服务方提供的公钥进行加密&#xff0c;服务方使用自己的私钥进行解密。RSA算法是目前使用最广泛的公钥密码算法。Java提供了KeyPairGenerator类要生…

BikeDNA(七)外在分析:OSM 与参考数据的比较1

BikeDNA&#xff08;七&#xff09;外在分析&#xff1a;OSM 与参考数据的比较1 该笔记本将提供的参考自行车基础设施数据集与同一区域的 OSM 数据进行所谓的外部质量评估进行比较。 为了运行这部分分析&#xff0c;必须有一个参考数据集可用于比较。 该分析基于将参考数据集…

01.neuvector防护平台功能实现设计

本篇文章主要讲neuvector大概的设计与实现&#xff0c;功能实现细节可查看后续文章&#xff0c;原文链接,欢迎大家关注我的github账号 一、整体架构 相关主要业务容器运行结构如下&#xff1a; 主要容器为以下几个&#xff1a; Controller容器负责规则的收集与下发&#xff0…