如何通过Gradle Task重命名文件?将project-1.5.jar改为project.jar
解决方案:在Gradle中重命名已有Jar文件
针对你要把src/project-1.5.jar重命名为src/project.jar的需求,我整理了两种简洁可行的Gradle实现方式,都是日常开发里常用的方案:
方式一:使用Copy任务(推荐)
Gradle的Copy任务内置了成熟的重命名逻辑,还能自动处理文件路径、冲突等细节,比手动操作文件更稳妥。你可以在build.gradle(或build.gradle.kts,如果你用Kotlin DSL的话)里添加如下任务:
Groovy DSL 版本
task renameProjectJar(type: Copy) { // 指定源文件所在目录 from 'src/' // 匹配要处理的目标Jar文件 include 'project-1.5.jar' // 输出目录和源目录保持一致,直接在src下修改 into 'src/' // 执行重命名替换 rename { fileName -> fileName.replace('project-1.5.jar', 'project.jar') } // 可选:提前删除已存在的目标文件,避免冲突 doFirst { def targetFile = file('src/project.jar') if (targetFile.exists()) { targetFile.delete() } } }
Kotlin DSL 版本
tasks.register<Copy>("renameProjectJar") { from("src/") include("project-1.5.jar") into("src/") rename { fileName -> fileName.replace("project-1.5.jar", "project.jar") } doFirst { val targetFile = file("src/project.jar") if (targetFile.exists()) { targetFile.delete() } } }
执行时只需在命令行运行:./gradlew renameProjectJar(Windows环境用gradlew.bat renameProjectJar)。
方式二:直接用File操作(轻量版)
如果不需要Copy任务的额外特性,也可以创建一个普通任务,用Gradle的文件API直接完成重命名:
Groovy DSL 版本
task renameProjectJar { doLast { def sourceFile = file('src/project-1.5.jar') def targetFile = file('src/project.jar') // 先检查源文件是否存在,避免报错 if (sourceFile.exists()) { // 若目标文件已存在,先删除 if (targetFile.exists()) { targetFile.delete() } // 执行重命名 sourceFile.renameTo(targetFile) } else { println "Error: 源文件 src/project-1.5.jar 不存在!" } } }
Kotlin DSL 版本
tasks.register("renameProjectJar") { doLast { val sourceFile = file("src/project-1.5.jar") val targetFile = file("src/project.jar") if (sourceFile.exists()) { if (targetFile.exists()) { targetFile.delete() } sourceFile.renameTo(targetFile) } else { println("Error: 源文件 src/project-1.5.jar 不存在!") } } }
额外提示
如果这个Jar是你通过Gradle构建生成的,其实可以直接在jar任务里配置输出文件名,省掉额外的重命名步骤:
jar { archiveFileName.set('project.jar') }
这样构建出来的Jar直接就是你想要的名称,不用事后再修改。
内容的提问来源于stack exchange,提问作者George Cimpoies
相关产品推荐
相关产品推荐

