maven不自动编译resources下的文件
问题背景:在苍穹外卖中的是导出数据运营报表时,需要从类加载器的路径下加载模板文件。将模板文件放到了
src/mian/resources
目录下,但是当我启动项目并使用该功能,在使用类加载器加载该文件加载该模板文件时,后台直接报我500
错误码。我后台日志查看—空指针异常
。就去检查了导致空指针异常的行数,告诉我时在创建XXSFWork
对象(即Excel对象)时传入的构造器参数为空。因为我向其中传入的是通过类加载器加载的静态文件。
所以,我当时就是在寻找是不是在写类加载器的时候,传入参数的文件路径出错了? 经过检查,仍然是500状态码。之后我就尝试既然找不到该文件,我的路径没错,文件也在对应路径上。关键来啦 ,我就去看了看通过编译后的文件路径中是否有templat
文件夹以及模板文件
,翻来覆去的查看target/classes
路径下怎么也找不到。然后,我就手动清理maven,进行重新编译!清理、、、编译、、甚至安装、、、翻来覆去、、目标文件中仍然没有,之后我去百度,问问AI
。
未曾想是pom.xml
该文件未配置的原因。
虽然pom文件中配置了如下代码:
> > <build>
> <plugins>
> <plugin>
> <groupId>org.springframework.boot</groupId>
> <artifactId>spring-boot-maven-plugin</artifactId>
> </plugin>
> </plugins>
>
> <resources>
> <!--检测mapper+xml,本项目数据访问层的SQL xml文件放在Java包中,而非resources下-->
> <resource>
> <directory>src/main/java/</directory>
> <includes>
> <include>**/*.xml</include>
> </includes>
> <filtering>false</filtering>
> </resource>
> <!--检测resources目录下的yml文件以及xml文件-->
> <resource>
> <directory>src/main/resources</directory>
> <includes>
> <include>**/*.properties</include>
> <!-- 配置一下yml文件 -->
> <include>**/*.yml</include>
> <include>**/*.xml</include>
> </includes>
> <filtering>false</filtering>
> </resource>
> </resources>
>
> </build>
但是 该配置文件中在检测resources资源目录时,多了个includes标签,然而,其中 并没有xlsx格式的文件后缀。因此,导致编译时未曾复制想要的文件,导致使用该功能是出现空指针异常。
总结
出现编译时未将resources下的文件复制到类文件中
1. 配置问题:检查pom.xml文件中是否有相关配置影响了资源的复制。
解决方式:
xml <include>**/*.xml</include>
2.文件名或路径问题
确保文件名或文件夹名没有使用Maven的保留关键字,如maven-metadata.xml,否则可能会导致问题。
3.插件配置问题
如果你有自定义的Maven插件配置,确保没有条件阻止资源的复制。
其他可能出现的问题
-
IDE配置问题
-
Maven版本或插件版本问题
-
文件系统权限问题