如何在ant中创建临时目录?

Ada*_*dam 17 ant

我想在ant(版本1.6.5)中创建一个临时目录并将其分配给一个属性.

  • 命令"mktemp -d"对此非常理想,但我无法从ant内部找到类似的功能
  • 除了临时文件任务之外,我在文档中找不到任何官方函数,这显然只创建文件,而不是目录.
  • 我正在考虑使用exec来调用tempfile并获得结果,但这会使我的build.xml依赖于UNIX/linux,我想避免这种情况.

背景:我正在尝试加速在网络文件系统内部构建的现有构建过程.构建已将所有源复制到临时目录,但这是在同一文件系统上.我已经测试过将它更改为/ tmp/foo,它可以提高速度:3分钟对4分钟.

sud*_*ode 25

您可以将tempfile任务java.io.tmpdir 系统属性组合以获取用于创建临时目录的文件路径:

<project default="test">

    <target name="test">
        <echo>${java.io.tmpdir}</echo>
        <tempfile property="temp.file" destDir="${java.io.tmpdir}" prefix="build"/>
        <echo>${temp.file}</echo>
    </target>

</project>
Run Code Online (Sandbox Code Playgroud)

请注意,该tempfile任务不会创建该文件(除非您要求).它只是设置一个属性,您可以使用它来创建文件或目录.

此任务将属性设置为临时文件的名称.与java.io.File.createTempFile不同,此任务实际上并不创建临时文件,但它确保在执行任务时文件不存在.

在我的环境中输出:

test:
     [echo] C:\Users\sudocode\AppData\Local\Temp\
     [echo] C:\Users\sudocode\AppData\Local\Temp\build1749402932
Run Code Online (Sandbox Code Playgroud)