2009-07-13 11 views
1

Ich versuche, jsmin mit Nant zu verwenden - und es verwendet nur stdin und stdout für Eingabe und Ausgabe. Mit der nant 'exec' Task können Sie die Ausgabe in eine Datei umleiten, aber nicht die Eingabe von einer Datei erhalten.NAnt exec funktioniert nicht mit stdin Umleitung?

Ich habe mit einem ‚Kommandozeile‘ versucht, mit ‚>‘ und ‚<‘ den Eingang und Ausgang zu leiten, aber Nant nur geht weg und kommt nicht zurück :(

Ich kann nicht glauben, dass keine -on hat versucht, dies vorher zu tun.Helfen Sie bitte! :)

+0

Bevor jemand anderen sagt: Ich habe versucht, mit der <-Operator, und Nant scheint nur auf weitere Tastatureingaben zu warten, kehrt also nie zurück. –

Antwort

2

Von http://www.mail-archive.com/[email protected]/msg04575.html.

 <exec program="cmd.exe" workingdir="."> 
       <arg value="/c cacls" /> 
       <arg value="${mdb.file}" /> 
       <arg value="/E" /> 
       <arg value="/G testpc\aspnet:F" /> 
       <arg value="&lt; y.txt" /> 
     </exec> 
+0

Ich fürchte, ich werde das jetzt wahrscheinlich nicht testen, aber vielen Dank, dass Sie das für mich gefunden haben! Ich nehme an, diese Antwort ist richtig. Ich habe festgestellt, dass nant concat Dateien nicht in der richtigen Reihenfolge speichert. Daher muss ich JSMin-Code ändern, um die Eingabe aus einer Gruppe von Dateien zu erhalten. –

0

Ich glaube, dass NAnt Eingaben von einer Datei unterstützt. Da es sich bei der Build-Datei um XML handelt, müssen Sie den XML-Code "<" verwenden.

<exec program="somefile.exe" workingdir="."> 
    <arg value="&lt; input.txt" /> 
</exec> 
+0

Ich habe das getan. Nant scheint nur ewig auf Eingaben zu warten. –

0

Die Umleitung und Rohr Operatoren sind ein Merkmal der Schale, C und C# Unterstützung Umleitung durch andere Mittel (Datei-Handles): Sie sollten etwas zu tun, ähnlich der Lage sein. Irgendwo habe ich das gelesen, weil die C# -Process-Klasse die Umleitung von Eingaben nicht unterstützt, und nant nur die Ausgabeumleitung für <exec> bereitstellt.

Zur Befehlseingabe umleiten wir auf die Schale greifen kann:

A) Aufrufen cmd.exe mit /c wie oben gezeigt, in dem Beispiel von acloutier. Vorsicht ist bei weißen Räumen geboten! Tatsächlich schlägt das Beispiel aufgrund des Abstands zwischen < und y.txt fehl, um das Beispiel funktionsfähig zu machen. Sie können auch das value Attribut in einem line Attribut umwandeln, aber dann müssen Sie vorsichtig sein beim Zitieren.

B) Da konnte ich nicht bekommen Rohre den exec-cmd-Ansatz zu arbeiten, anstatt ich on the fly eine Batch-Datei am Generierung mit <echo>:

<echo file="${WD}/login.bat">"${P4}" diff -sd | "${P4}" -x- sync -f using</echo>   
<exec program="login.bat" basedir="${WD}" workingdir="${P4.WorkspaceRoot}" />