2009-05-22 4 views
7

Ich habe das folgende Snippet in meinem Ant-Skript. Er führt gerade fein:Ausführen mit Ant funktioniert mit absoluten Pfad aber nicht relativen Pfad

<exec executable="C:\test\foo\programName.exe" /> 

Aber dann, wenn ich versuche, es auszuführen, indem Sie das Verzeichnis einstellen, etwa so:

<exec executable="programName.exe" 
    dir="C:\test\foo\" /> 

ich:

fehlgeschlagen Execute: java.io .IOException: Das Programm "programName.exe" (im Verzeichnis "C: \ test \ foo") kann nicht ausgeführt werden: CreateProcess error = 2, Das System kann die Datei nicht finden ied

Bitte helfen! Warum funktioniert es nicht, wenn das Verzeichnis separat angegeben wird?

+0

'C: \ \ foo test' nicht ein relativer Pfad ist. Möglicherweise müssen Sie die Frage korrigieren. – Gleb

+0

Bearbeitet. Am Ende muss ich mit einem relativen Pfad arbeiten. Die Tatsache, dass das nicht funktioniert, macht mich verrückt. – Cuga

Antwort

2

ich damit endete kleben:

<exec executable="${basedir}\myexefile.exe}" /> 
1

Try this:

<property name="prog.dir" value="C:/test/foo" /> 
<exec executable="${prog.dir}/programName.exe"/> 

Es scheint, dass das Verzeichnis, aus dem Sie das Programm ausführen in Ihrem Build-Pfad sein muss.

4

Fügen Sie den resolveexecutable Attribut:

<exec executable="programName.exe" 
    resolveexecutable="true" 
    dir="C:\test\foo\" /> 

resolveexecutable Wenn dieses Attribut wahr ist, der Name der ausführbaren aufgelöst wird zunächst gegen das Projekt basedir und wenn das tut nicht existieren, gegen die Ausführung Verzeichnis, falls angegeben. Wenn Sie bei Unix-Systemen die Ausführung von Befehlen im Pfad des Benutzers zulassen möchten, setzen Sie dies auf false. da Ant 1.6 Nein, ist standardmäßig falsch