17

Ant (バージョン 1.6.5) で一時ディレクトリを作成し、それをプロパティに割り当てたいと思います。

  • コマンド「mktemp -d」はこれに最適ですが、ant 内から同様の機能を見つけることができません
  • ディレクトリではなくファイルのみを作成するように見えるtempfileタスクを除いて、ドキュメントには公式の機能が見つかりません。
  • exec を使用して tempfile を呼び出して結果を取得することを検討していますが、これにより、build.xml が UNIX/Linux に依存することになり、これは避けたいと考えています。

背景: ネットワーク化されたファイル システム内でビルドする既存のビルド プロセスを高速化しようとしています。ビルドはすでにすべてのソースを一時ディレクトリにコピーしていますが、これは同じファイルシステムにあります。これを /tmp/foo に変更してテストしたところ、速度が大幅に向上しました: 3 分対 4 分。

4

2 に答える 2

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>

tempfileタスクはファイルを作成しないことに注意してください(要求しない限り)。ファイルまたはディレクトリの作成に使用できるプロパティを設定するだけです。

このタスクは、プロパティを一時ファイルの名前に設定します。java.io.File.createTempFile とは異なり、このタスクは実際には一時ファイルを作成しませんが、タスクの実行時にファイルが存在しなかったことを保証します。

私の環境での出力:

test:
     [echo] C:\Users\sudocode\AppData\Local\Temp\
     [echo] C:\Users\sudocode\AppData\Local\Temp\build1749402932
于 2012-05-24T11:34:52.643 に答える