Spring Boot如何读取Maven插件生成在target目录的Zip文件?
Spring Boot读取target目录文件的正确路径指定方法
1. 项目根目录相对路径(IDE运行场景)
如果是在IDE中直接运行Spring Boot,默认工作目录就是项目根目录,直接使用相对于根目录的路径即可定位target下的文件:
File zipFile = new File("./target/your-generated-file.zip"); if (zipFile.exists() && zipFile.isFile()) { // 执行文件处理逻辑 }
2. 动态获取工作目录(通用场景)
为了避免工作目录不确定导致的路径失效,通过系统属性获取当前进程的工作目录,再拼接target路径,这是最可靠的通用方式:
String currentWorkingDir = System.getProperty("user.dir"); File zipFile = new File(currentWorkingDir + "/target/your-generated-file.zip");
3. 打包成Jar后的读取方式(需包含文件到Jar)
如果需要将target下的Zip文件打包进最终的Jar包,先在pom.xml中配置Maven资源插件,把该文件纳入classpath:
<build> <resources> <resource> <directory>target</directory> <includes> <include>your-generated-file.zip</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
配置后,就可以用ResourceLoader读取(并非只能读src/main/resources,只要是classpath内的资源都支持):
@Autowired private ResourceLoader resourceLoader; public void processZipFile() throws IOException { Resource zipResource = resourceLoader.getResource("classpath:your-generated-file.zip"); try (InputStream inputStream = zipResource.getInputStream()) { // 处理输入流 } }
常见踩坑点
- 路径拼写错误:注意斜杠方向(统一用
/)、文件名大小写(Linux环境敏感) - 文件生成时机:确保Maven插件生成Zip文件的阶段早于Spring Boot读取逻辑的执行时机(比如插件绑定到
compile阶段,而非package阶段) - 工作目录变更:IDE运行配置中若修改了工作目录,相对路径会失效,优先用
user.dir动态获取路径
内容的提问来源于stack exchange,提问作者Sandeep Girolkar
相关产品推荐
相关产品推荐

