Ant构建文件中<fileset>元素的工作机制及复制结果疑问
关于Ant中与的疑问及结果判断
我有一个名为build.xml的构建文件,其中包含如下<copy>指令:
<copy todir="build"> <fileset dir="data"/> </copy>
对应的文件树结构如下:
build.xml build/ data/ ├── 2024/ | ├── accounts.txt | ├── sales.txt | ├── users/ | | └── user-data.txt ├── 2025/ | ├── accounts.txt | ├── sales.txt | ├── users/ | | └── user-data.txt
查阅Ant官方文档后仍有两点疑问:
- A) 文档定义提到“FileSet是一组文件,这些文件位于从基准目录开始的目录树中”,此表述未明确是否包含目录树本身,请问
<fileset>是否包含目录结构? - B) 若包含目录,
dir属性指定的基准目录是否会被包含?
同时无法判断上述<copy>操作会产生以下三种结果中的哪一种:
结果1
build.xml build/ ├── 2024/ | ├── accounts.txt | ├── sales.txt | ├── users/ | | └── user-data.txt ├── 2025/ | ├── accounts.txt | ├── sales.txt | ├── users/ | | └── user-data.txt data/ ├── 2024/ | ├── accounts.txt | ├── sales.txt | ├── users/ | | └── user-data.txt ├── 2025/ | ├── accounts.txt | ├── sales.txt | ├── users/ | | └── user-data.txt
结果2
build.xml build/ ├── data/ | ├── 2024/ | | ├── accounts.txt | | ├── sales.txt | | ├── users/ | | | └── user-data.txt | ├── 2025/ | | ├── accounts.txt | | ├── sales.txt | | ├── users/ | | | └── user-data.txt data/ ├── 2024/ | ├── accounts.txt | ├── sales.txt | ├── users/ | └── └── user-data.txt ├── 2025/ | ├── accounts.txt | ├── sales.txt | ├── users/ | | └── user-data.txt
结果3
build.xml build/ ├── accounts.txt ├── sales.txt ├── user-data.txt ├── accounts.txt' ├── sales.txt' └── user-data.txt' data/ ├── 2024/ | ├── accounts.txt | ├── sales.txt | ├── users/ | └── └── user-data.txt ├── 2025/ | ├── accounts.txt | ├── sales.txt | ├── users/ | | └── user-data.txt
疑问解答与结果判断
- 疑问A解答:
<fileset>会保留目录结构,Ant在复制时会自动创建目标路径中缺失的子目录,以完整保留源文件的层级关系。 - 疑问B解答:
dir属性指定的基准目录(即data/)不会被包含到目标目录中,只会复制该目录下的所有内容(包括子目录和文件)。
因此,上述<copy>操作实际会产生结果1的文件结构。
内容的提问来源于stack exchange,提问作者Borea Deitz
相关产品推荐
相关产品推荐

