仅当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.pyb.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"。