Gradle任务重命名文件

15
我想在gradle任务中进行简单的文件重命名。我有一个称为project-1.5.jar的jar文件存放在src文件夹下,我想将该jar文件重命名为project.jar。
因此, project/project-1.5.jar 重命名为 project/project.jar,使用 gradle 非常感谢任何想法。

可能是Gradle zip:如何轻松包含和重命名一个文件?的重复问题。 - Ben Watson
4个回答

18

使用rename方法应该能解决问题。

task renameArtifacts (type: Copy) {
    from ('project/')
    include 'project-1.5.jar'
    destinationDir file('project/')
    rename 'project-1.5.jar', "project.jar"
}

2
重命名 'project-1.5.jar' 为 "project.jar",我们能否使用类似于 rename 'project*.jar', "project.jar" 的通用方法呢?然而这种方法并不起作用,有人能告诉我替代方案吗? - ShankPossible
我可能错了,但这不会执行“重命名”,而是执行“复制”。问题明确要求一种“重命名”文件的方法。无论如何,对于大多数用例,复制都足够了。 - DBear

6
对我来说这很有效 - 不留下源文件(不会有重复)。
task pdfDistributions(type: Sync) {
    from('build/asciidoc/pdf/docs/asciidoc/')
    into('build/asciidoc/pdf/docs/asciidoc/')
    include '*.pdf'
    rename { String filename ->
        filename.replace(".pdf", "-${project.version}.pdf")
    }
}

2
Gradle允许从您的任务实现中调用ant任务。这使得移动文件变得非常容易,只需像下面这样做:
ant.move(file:'oldFile.txt', tofile:'newfile.txt')

当您需要重命名文件但不必使用“复制”任务时,例如在函数中或作为另一种类型/自定义任务的步骤中,此功能非常有用。应该有一种本地方法来实现这一点(除非我错过了它)。 - galaxis

0
晚了一点,但Gradle提供了`project.file('xxx').renameTo('zzz')`这个方法。

虽然这段代码可能解决了问题,但是如果能够包含一个解释(点击此处)来说明为什么以及如何解决这个问题,将会极大地提高你的帖子质量,并且可能会得到更多的赞同。请记住,你的回答是为未来的读者而写的,而不仅仅是对当前提问者的回答。请[编辑]你的回答,添加解释并指出适用的限制和假设。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接