我有一个像这样的目录结构:
file1.txt
file2.txt
dir1/
file3.txt
file4.txt
我想将整个结构Gradle to copy用于另一个目录。我试过这个:
task mytest << {
copy {
from "file1.txt"
from "file2.txt"
from "dir1"
into "mytest"
}
}
但这导致以下结果:
mytest/
file1.txt
file2.txt
file3.txt
file4.txt
请参阅 是否可以直接使用Gradle copy? 到目前为止,我只能提出这个解决方案: 对于我的简单示例,它并不多,但在我的实际情况中,我想要复制许多目录,而且我不想重复这么多。dir1
的副本复制 dir1
中的文件,而我想复制dir1
本身。< / p>
task mytest << {
copy {
from "file1.txt"
from "file2.txt"
into "mytest"
}
copy {
from "dir1"
into "mytest/dir1"
}
}
答案 0 :(得分:24)
您可以使用.
作为目录路径,使用include
来指定要复制的文件和目录:
copy {
from '.'
into 'mytest'
include 'file*.txt'
include 'dir1/**'
}
如果from
和into
都是目录,那么您最终将获得目标目录中源目录的完整副本。
答案 1 :(得分:1)
我知道这有点晚了,但我尝试了上面的@Andrew解决方案,它复制了目录中的所有内容。 &#34;&#34;现在不需要代表直接参与。 所以我做了一些研究 并找到了this
并基于它创建了以下代码(使用最新检查):
任务resourcesCopy(){
doLast {
copy {
from "src/main/resources"
into "./target/dist/WEB-INF/classes"
}
copy {
from "GeoIP2.conf"
into "./target/dist/WEB-INF"
}
}
}
答案 2 :(得分:0)
我不知道这种语法已经存在多久了,但是似乎更清楚了。
task copyToRelease(dependsOn: [deletePreviousRelease], type: Copy) {
from('build/dist') {
include '**/*.*'
}
destinationDir(new File('../htmlrelease/src/main/webapp/canvas'))
}
答案 3 :(得分:-1)
也许也很有帮助:使用fileTree
递归复制整个目录,例如,
task mytest << {
copy {
from fileTree('.')
into "mytest"
}
}