如何在Gradle中将指定文件导出到jar包同级目录
Gradle实现文件输出到Jar同级目录的方案
你可以通过给jar任务追加后置复制逻辑实现需求,等效于C#中设置「Build Action」为「Content」的效果,修改后的完整配置如下:
// 替换为你自己的settings.json文件所在的源路径,示例为项目根目录下的settings.json def targetContentFile = file("settings.json") jar { manifest { attributes 'Main-Class': 'Program' } from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } // 可选:如果你的settings.json在resources目录下,添加此行避免文件被打进Jar内部 exclude 'settings.json' // Jar打包完成后自动复制文件到Jar同级目录 doLast { copy { from targetContentFile // destinationDirectory是Jar任务内置属性,指向Jar默认输出目录build/libs into destinationDirectory } } }
配置说明
- 如果你有多个需要输出的外部文件,直接在
from参数后追加文件路径即可,示例:from targetContentFile, file("config.xml"), file("static/") - 执行
./gradlew jar或者./gradlew build命令时,会自动完成Jar打包和配置文件的复制操作 - 如果你后续修改了Jar的输出目录,不需要调整复制逻辑,
destinationDirectory会自动同步最新的输出路径
内容的提问来源于stack exchange,提问作者Rick Neeft
相关产品推荐
相关产品推荐

