You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:57:16