SpringBoot打包遇到的问题

文章讲述了如何在SpringBoot项目中打包webapp和resources目录,并将自定义文件夹打包到特定路径。当从jar包中读取资源文件时,提到了传统方式无法工作,但可以使用ClassPathResource来解决问题,该方法在jar和非jar环境下均能正确获取文件。
摘要由CSDN通过智能技术生成

springboot项目打包webapp、resources和自定义文件夹

1、打包 webapp和resources

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/**</include>
            </includes>
            <!-- 开启过滤,用指定的参数替换directory下的文件中的参数 -->
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/webapp</directory>
            <targetPath>META-INF/resources</targetPath>
            <includes>
                <include>**/**</include>
            </includes>
        </resource>
    </resources>
</build>

2、打包自定义文件夹

<resource>
    <directory>src/main/resources/xmlTemplate</directory>
    <targetPath>xmlTemplate</targetPath>
</resource>


SpringBoot打成jar包后无法获取Resources文件

在前几天项目开发过程中,因为业务需要,自己定义了一个xml文件放到了resources文件夹下,通过SpringResourceUtils来获取文件,代码如下:

File testFile = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + "test.xml");

后来打成jar包放到测试环境后,这种方式就获取不到文件了,百度了一波,遇到同样问题的小伙伴还挺多,解决方案也五花八门,找了一种比较简便的方式,使用ClassPathResource,如下所示:

ClassPathResource classPathResource = new ClassPathResource("text.xml");	// 解决把成jar包后无法读取文件的问题
boolean exists = classPathResource.exists(); // 判断文件是否存在
File file = classPathResource.getFile(); // 获取文件对象
InputStream inputStream = classPathResource.getInputStream(); // 获取文件输入流

ClassPathResource也提供了相关的方法,使用也挺方便的。

此种方式不管打没打成jar包都可获取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值