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

如何在Gradle构建war包时将properties文件添加到指定包路径下

问题根因

Gradle默认的Java项目约定中,src/main/java目录仅会处理.java后缀的源文件,非java文件会被直接忽略;资源文件默认需要放在src/main/resources目录下,才会被自动拷贝到编译输出目录。你之前自定义的war任务没有生效,核心原因是填写的源路径错误,遗漏了java层级,实际文件路径为src/main/java/com/foo/bar,而非你配置的src/main/com/foo/bar。


解决方案1(推荐,符合Gradle标准约定)

无需自定义war任务,按照Gradle资源目录规则调整文件位置即可:

  • 在src/main/resources目录下创建和配置类对应的包路径com/foo/bar
  • 将b.properties移动到src/main/resources/com/foo/bar目录下

执行gradle build时,processResources任务会自动把该文件拷贝到WEB-INF/classes/com/foo/bar路径下,完全满足同包下存在properties文件的要求。


解决方案2(不移动现有properties文件)

如果不想修改现有文件的存放位置,可选择以下任意一种配置:

方式A:修改源集资源识别规则

让Gradle自动识别并拷贝src/main/java下的properties文件,在build.gradle中添加如下配置:

sourceSets {
    main {
        resources {
            srcDirs += ["src/main/java"]
            include "**/*.properties"
        }
    }
}

该配置会将src/main/java目录下所有properties文件识别为资源文件,自动拷贝到编译输出目录,无需额外修改war任务。

方式B:修正war任务配置

修正你之前配置中的路径错误,调整后配置如下:

war {
    from('src/main/java/com/foo/bar') {
        include 'b.properties'
        into 'WEB-INF/classes/com/foo/bar'
    }
}

如果配置后仍不生效,可执行gradle build --info查看war任务的文件拷贝日志,确认路径匹配情况。


内容的提问来源于stack exchange,提问作者Nico Gallegos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:48:02