如何在 ant 中创建临时目录

  • 本文关键字:创建 ant ant
  • 更新时间 :
  • 英文 :


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

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

背景:我正在尝试加快在网络文件系统内构建的现有构建过程。构建已经将所有源代码复制到临时目录,但这位于同一文件系统上。我已经测试过将其更改为/tmp/foo 并且它提供了值得的速度提升:3 分钟与 4 分钟。

您可以将临时文件任务与 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>

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

此任务将属性设置为临时文件的名称。与 java.io.File.createTempFile,此任务实际上不会创建 临时文件,但它确实保证该文件在以下情况下不存在 任务已执行。

我环境中的输出:

test:
     [echo] C:UserssudocodeAppDataLocalTemp
     [echo] C:UserssudocodeAppDataLocalTempbuild1749402932

上面的答案只提示如何创建一个临时目录。关键是它只返回一个字符串。更完整的答案是

<target name="temptest" description="test making tempdir">
    <tempfile property="mytempdir" destdir="${java.io.tmpdir}"/>
    <tempfile property="mytempfile" destdir="${mytempdir}"/>
    <tstamp>
        <format property="now" pattern="MMMM dd yyyy"/>
    </tstamp>
    <copy tofile="${mytempfile}">
        <string value="today=${now}"/>
    </copy>
    <property file="${mytempfile}"/> 
    <echo message="It it now ${today}"/>
</target>              

相关内容

  • 没有找到相关文章

最新更新