2012-05-24 4 views
15

私は、ant(バージョン1.6.5)に一時ディレクトリを作成し、それをプロパティに割り当てる必要があります。antに一時ディレクトリを作成するには?

  • コマンドは「mktempの-d」このために理想的であるが、私は明らかにのみ作成されますtempfile taskから離れてドキュメント内の任意の公式の機能を見つけることができません蟻
  • 内側から同様の機能を見つけることができませんディレクトリではなくファイルです。
  • 私はexecを使ってtempfileを呼び出して結果を得ることを検討していますが、これによってbuild.xmlがUNIX/Linuxに依存することになります。

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

答えて

22

あなたは一時的なディレクトリを作成するために使用するファイルのパスを取得するにはjava.io.tmpdirsystem propertytempfile taskを組み合わせることができます

​​

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

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

私の環境での出力:

test: 
    [echo] C:\Users\sudocode\AppData\Local\Temp\ 
    [echo] C:\Users\sudocode\AppData\Local\Temp\build1749402932 
-1

一時ディレクトリを作成する方法での唯一のヒント上記の答え。ポイントは単に文字列を返すことです。より完全な答えは

<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>    
です
関連する問題