我想在ant(版本1.6.5)中创建一个临时目录并将其分配给一个属性。
背景:我正在尝试加速在网络文件系统内部构建的现有构建过程。构建已将所有源复制到临时目录,但这是在同一文件系统上。我已经测试过将它更改为/ tmp / foo,它可以提高速度:3分钟对4分钟。
答案 0 :(得分:25)
您可以将tempfile task与java.io.tmpdir
system property结合使用,以获取用于创建临时目录的文件路径:
<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:\Users\sudocode\AppData\Local\Temp\
[echo] C:\Users\sudocode\AppData\Local\Temp\build1749402932
答案 1 :(得分:-2)
上面的答案仅提示如何创建临时目录。关键是只返回一个字符串。更完整的答案是
<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>