maven编译过滤(如excel)

news/2024/7/21 6:31:32 标签: excel, maven, java

现象

使用easyExcel 3.1.1操作excel

使用maven编译后,原先正常excel在读取的时候抛出了异常。

java">java.util.zip.ZipException: invalid stored block lengths

一开始是怀疑excel里面内容格式不对,打开excel检查后发现格式都是正常的。

然后开始看源码
debugcom.alibaba.excel.util.WorkBookUtil#createWorkBook时想到打开一个普通的excel文件为啥要zip解压,是不是被压缩了。

随机在打包后的target文件夹下去打开excel,果然也是打不开了。
之后查阅资料,确认是maven打包的时候损坏了文件。

那么问题就变成了excel文件不通过maven编译,直接打包进target

解决方案

关键就在于resource标签的处理,2个resource标签都需要加上

<build>

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>
                    template/*.xlsx
                </exclude>
            </excludes>
        </resource>

        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
                <include>
                    template/*.xlsx
                </include>
            </includes>
        </resource>
    </resources>

    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

原因

mavenpom文件中有时候会定义一些变量
通常都是定义在profiles标签下,然后我们在resource下一些xml文件或者yml文件中可以引用这些变量,常见的就是用来切换dev环境和pro环境

捞个网上的demo

xml中直接引用${config} yml中引用@config@

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <config>pathConfig</config>
        </properties>
    </profile>
</profiles>

http://www.niftyadmin.cn/n/477142.html

相关文章

系统定制开发-安卓输入法将应用顶起问题

输入法弹出会导致应用窗口往上移动 InputMethodService.java中有关窗口重置代码 只需要重写onComputeInsets,将outInsets.contentTopInsets 设为decor.getHeight() Overridepublic void onComputeInsets(final InputMethodService.Insets outInsets) {super.onComputeInsets(o…

通过Python的tkinter,在滚动条中添加各种控件

在用tkinter设计UI时,需要在有限的空间里面堆叠多行元素,此时就需要用到滚动条的效果。案例效果如图: 框架思路: 通过tkinter中的画布canvas与滚动条scrollbar进行联动,并将所有的控件都塞入到画布canvas中。其中有一步对画布大小的设置也很关键,即canvas.config(width=…

UE5 Stride Warping Orientation Warping功能学习

在UE5的 Lyra Demo中&#xff0c;运用到了各类动画Warping&#xff08;动画扭曲&#xff09;技术&#xff0c;通过各类Warping节点在动画蓝图中的合理组织&#xff0c;可以有效的解决运动滑步问题&#xff0c;并为动画增添更多细节。 本文主要基于Animation Warping插件讲一下…

【Android安全】Flutter app逆向

使用《Flutter逆向助手》逆向Flutter app 参考&#xff1a;https://www.bilibili.com/video/BV1SM41147g5 flutter app特征&#xff1a; lib/armeabi-v7a/下面有libapp.so和libflutter.so 逆向分析工具&#xff1a; 看雪&#xff1a;Flutter逆向助手 可以解析libapp.so文件…

十大编程算法

算法一&#xff1a;快速排序算法 快速排序是由东尼霍尔所发展的一种排序算法。在平均状况下&#xff0c;排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较&#xff0c;但这种状况并不常见。事实上&#xff0c;快速排序通常明显比其他Ο(n log n) 算法更快&a…

CentOS 重要配置

目录 重要配置 重要配置 yum 添加 阿里云源 http://mirrors.aliyun.com/help/centos mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyum 添加 r…

总结linux主机数据拷贝与linux 服务器之间拷贝文件的方法

一、前言 scp就是secure copy,是用来进行远程文件拷贝的 数据传输使用ssh1,并且和ssh1使用相同的认证方式,提供相同的安全保证 与rcp不同的是,scp会要求你输入密码如果需要的话。 二、用法 1、最简单的应用如下: scp 本地用户名IP地址:文件名1 远程用户名IP地址:文件名2 […

工程安全监测无线振弦采集仪在建筑物的应用

工程安全监测无线振弦采集仪在建筑物的应用 工程安全监测无线振弦采集仪是一种先进的监测设备&#xff0c;可以在建筑物、桥梁、隧道、大坝等工程施工或运营中进行振动监测和安全评估。其在建筑物的应用主要是针对建筑物结构的振动和变形进行监测和分析&#xff0c;以确保建筑…