With the Gradle copy task we can define renaming rules for the files that are copied. We use the rename() method of the copy task to define the naming rules. We can use a closure where the filename is the argument of the closure. The name we return from the closure is the new name of copied file. Or we can define a regular expression and set the replacement value for the corresponding regular expression. We can use groups in the regular expression and use them in the replacement value like $<group>.
0.
task copyFiles(type: Copy) {
1.
from 'src/files'
2.
into "$buildDir/files"
3.
rename '(.*)-(.*).html', '$2/$1.html'
4.
rename ~/(.*).template.(.*)/, '$1.$2'
5.
rename { filename ->
6.
filename.replace 'java', 'groovy'
7.
}
8.
}
Let's create some source files, so the renaming rules can be applied to them.
src/files/index-en.html:
<html>
<body>
<h1>Hello Gradle</h1>
</body>
</html>
src/files/index-nl_NL.html:
<html>
<body>
<h1>Hallo Gradle</h1>
</body>
</html>
src/files/sample.template.txt:
Sample file.
src/files/Sample.java:
public class Sample {
private String gradle = "Gradle";
}
We run $ gradle copyFiles and we get the following files in build/files:
nl_NL
|
+-- index.html
en
|
+-- index.html
Sample.groovy
sample.txt
本文介绍如何在Gradle中通过自定义rename()方法实现文件重命名规则,包括使用闭包、正则表达式及group进行复杂操作。

被折叠的 条评论
为什么被折叠?



