如何使用ant脚本在分布式系统中创建文件



我正在使用mqfte。在将源文件传输到目的地后,我必须创建一个与源文件同名的空txt文件。如何使用ant脚本做到这一点?

场景:

Srcpath:\src\test.datdestpath:\dest\test.dat

文件从src路径移动后,我需要使用ant脚本在src路径中创建一个空文件test.dat?如何做到这一点?

在传输文件之前,您可以使用Touch任务在临时目录中创建与要传输的文件匹配的新空文件(重复使用相同的文件集)。传输完成后,您可以使用Move任务将空文件复制到src目录中。您可以在Move任务中使用overwrite="false"来确保src目录中剩余的文件不会被替换(例如,如果您希望确保只有成功传输才有空文件)。

下面是一个例子。

<project default="test">
  <target name="test">
    <touch>
      <fileset dir="src">
        <include name="test*"/>
      </fileset>
      <mapper type="regexp" from="(.*)" to="tmp/1"/>
    </touch>
    <move todir="dest">
      <fileset dir="src">
        <include name="test*"/>
        <!-- simulate file not transferred -->
        <exclude name="test.doc"/>
      </fileset>
      <globmapper from="test.*" to="result_*.txt"/>
    </move>

    <move todir="src" overwrite="false">
      <fileset dir="tmp"/>
    </move>
  </target>
</project>

第一步代表你的转会。一个文件(test.doc)没有从src目录中移出(模拟失败的传输)。您可以在src目录中测试创建包含一些内容的文件。在目标完成后,test.doc应该仍然有其原始内容。其他文件应为空。

在回答您关于regexp映射器的问题时:

<mapper type="regexp" from="(.*)" to="tmp/1"/>

这将整个传入文件名捕获到一个组中。。。

from="(.*)"

并将"tmp/"添加到捕获的组。。。

to="tmp/1"

(在正则表达式中,1是指表达式中捕获的第一个组。组使用括号定义。)

因此,从src/somefile.txt,我们将获得somefile.txt作为映射器的输入文件,并将其转换为tmp/somefile.txt

相关内容

  • 没有找到相关文章

最新更新