渐变复制任务的include和Excludes的java规范
我有一个包含一组内容的复制任务
task test_init(dependsOn: generate_scripts){
doFirst{
mkdir (project.test_dir)
mkdir (project.test_data_dir)
mkdir (project.test_reports_dir)
mkdir (project.test_logs_dir)
mkdir (project.test_jasper_dir)
mkdir (project.test_chart_dir)
}
doLast{
copy
{
from"${test_script_hsqldb_nd}"
into"${test_dir}"
}
copy
{
from"${test_script_create_constraints}"
into"${test_dir}"
}
copy
{
from"${test_script_drop_constraints}"
into"${test_dir}"
}
copy
{
from fileTree(dir: "${test_src_dir}",
include:
[
'**/*.xml',
'**/*.dtd',
'**/*.csv',
'**/*.mpp',
'**/*.dic',
'**/*.png',
'**/*.properties'
])
into"${build_classes_dir}"
}
}
//////THIS IS MY UGLY WORKAROUND////////////////////
doLast{
delete "${build_classes_dir}/com/XXXX/ppm/gantt"
delete "${build_classes_dir}/com/XXXX/ppm/util"
delete "${build_classes_dir}/com/XXXX/ppm/action/pageinformation"
}
}
它工作得很好,但是最后一次复制任务的“from”树中包含了3个文件夹,它们不包含任何与包含内容相关的文件,因此在执行任务之后,它们是空的。 我想把他们完全排除在任务之外,但我很难做到这一点。目前,我只是在最后的“doLast”块中删除它们,这似乎有点愚蠢。 我试过了
exclude: "${test_src_dir}/com/XXXX/ppm/gantt",..**similar statements for other files**
及
exclude: "${test_src_dir}/**/gantt"
虽然我觉得“**”的用法在这个上下文中是不正确的。 我希望大家能提供意见
# 1 楼答案
您可以尝试
includeEmptyDirs = false
,尽管我不能完全确定它是否适用于非空目录,这些目录只有在接受includes/excludes之后才会变为空PS:通常最好使用
Copy
任务(还显示了语法可以简化很多):Copy
任务和copy
方法都将自动创建目标目录