仅当Apache ant中存在相应文件时如何复制文件?
How to copy a file only if a corresponding file exists in Apache ant?
例如:
src.dir
---a.py
---a.reqs.py
---b.py
---b.reqs.py
---c.py
dest.dir
在这种情况下,只有 a.py
和 b.py
应该复制到 dest.dir
。
我试过了 -
<copy todir="${dest.dir}">
<fileset dir="${src.dir}" includes="*.reqs.py"/>
<mapper type="glob" from = "*.reqs.py" to = "*.py"></mapper>
</copy>
但是,这似乎是复制 reqs 文件并重命名它们,这不是必需的。
映射器用于重命名而不是定义依赖项,但您可以在一项任务中完成这两项工作。
这对我有用:
<copy todir="${dest.dir}">
<fileset dir="${src.dir}" includes="*.py">
<present targetdir="${src.dir}">
<mapper type="glob" from = "*.py" to = "*.reqs.py"></mapper>
</present>
</fileset>
</copy>
这与您的尝试类似,但使用 <present>
selector 通过嵌套映射器声明对 "req" 文件的依赖关系。
它说 "only copy the *.py files if *.req.py files with the same names are present in the src.dir"。
例如:
src.dir
---a.py
---a.reqs.py
---b.py
---b.reqs.py
---c.py
dest.dir
在这种情况下,只有 a.py
和 b.py
应该复制到 dest.dir
。
我试过了 -
<copy todir="${dest.dir}">
<fileset dir="${src.dir}" includes="*.reqs.py"/>
<mapper type="glob" from = "*.reqs.py" to = "*.py"></mapper>
</copy>
但是,这似乎是复制 reqs 文件并重命名它们,这不是必需的。
映射器用于重命名而不是定义依赖项,但您可以在一项任务中完成这两项工作。
这对我有用:
<copy todir="${dest.dir}">
<fileset dir="${src.dir}" includes="*.py">
<present targetdir="${src.dir}">
<mapper type="glob" from = "*.py" to = "*.reqs.py"></mapper>
</present>
</fileset>
</copy>
这与您的尝试类似,但使用 <present>
selector 通过嵌套映射器声明对 "req" 文件的依赖关系。
它说 "only copy the *.py files if *.req.py files with the same names are present in the src.dir"。