在Gradle中复制整个目录
我的目录结构如下:在Gradle中复制整个目录,gradle,Gradle,我的目录结构如下: file1.txt file2.txt dir1/ file3.txt file4.txt 我想将整个结构使用到另一个目录中。我试过这个: task mytest << { copy { from "file1.txt" from "file2.txt" from "dir1" into "mytest" } } 请参见,来自dir1的副本复制了dir1中的文件,
file1.txt
file2.txt
dir1/
file3.txt
file4.txt
我想将整个结构使用到另一个目录中。我试过这个:
task mytest << {
copy {
from "file1.txt"
from "file2.txt"
from "dir1"
into "mytest"
}
}
请参见,来自dir1
的副本复制了dir1
中的文件,而我想复制dir1
本身
有没有可能直接用它来做这件事
到目前为止,我只能提出以下解决方案:
task mytest << {
copy {
from "file1.txt"
from "file2.txt"
into "mytest"
}
copy {
from "dir1"
into "mytest/dir1"
}
}
task mytest您可以使用
作为目录路径,并使用include
指定要复制的文件和目录:
copy {
from '.'
into 'mytest'
include 'file*.txt'
include 'dir1/**'
}
如果from
和into
都是目录,则最终会在目标目录中得到源目录的完整副本。我知道这有点晚,但我尝试了上面的@Andrew solution,它复制了目录中的所有内容。
如今,不要求“.”代表直系亲属。
所以我做了一些研究
发现
并在此基础上创建了以下代码(带有最新检查):
task resourcesCopy() {
doLast {
copy {
from "src/main/resources"
into "./target/dist/WEB-INF/classes"
}
copy {
from "GeoIP2.conf"
into "./target/dist/WEB-INF"
}
}
}
可能还有帮助:使用fileTree
递归复制整个目录,例如
task mytest << {
copy {
from fileTree('.')
into "mytest"
}
}
task mytest我不知道这种语法已经存在了多久,但它似乎更清晰了一点
task copyToRelease(dependsOn: [deletePreviousRelease], type: Copy) {
from('build/dist') {
include '**/*.*'
}
destinationDir(new File('../htmlrelease/src/main/webapp/canvas'))
}
问题是,如果此文件夹中有其他文件,我不想复制。我可以使用excludes
参数,但这很容易出错,因为将来可能会添加其他子目录。include
对您有用吗?我对答案进行了扩展,以说明如何指定要复制的文件/目录。实际上,我需要执行包括“dir1/**”
以复制目录1及其下的所有内容。否则它只复制了一个空的dir1目录。谢谢!正是我需要的!
task copyToRelease(dependsOn: [deletePreviousRelease], type: Copy) {
from('build/dist') {
include '**/*.*'
}
destinationDir(new File('../htmlrelease/src/main/webapp/canvas'))
}