gradle: task Ausführen "eingeben:Exec" mit vielen Argumenten mit Leerzeichen
Habe ich die gradle-task, der sollte erstellen Sie Websphere-profile für Windows-Betriebssysteme
task createProfile(type:Exec) {
def commandToExecute = new StringBuffer()
def profile = 'AppSrv02'
def wasHome = 'C:/IBM new/WebSphere/AppServer'
def str = new LinkedList <String> ();
str.add('cmd')
str.add('/c')
str.add(wasHome + '/bin/manageprofiles.bat')
str.add('-create')
str.add('-profileName')
str.add(profile)
//str.add('-templatePath')
//str.add(wasHome + '/profileTemplates/default')
println (str)
commandLine str.toArray()
}
Und das problem erscheint, wenn ich die Auskommentierung auskommentierte Zeilen, nach der es Aufgabe schlägt fehl, und sagen mir, dass: "C:/IBM" ist nicht gültig batch-Datei. Wenn ich profileTemplates nicht in den Ordner, der Leerzeichen enthält, funktioniert alles wieder. Aber Vorlagen sollte liegt int wasHome( Und manchmal wasHome Leerzeichen(
Habe ich jetzt Ideen, warum das hinzufügen von Vorlagen-Schlüssel (mit dem Wert mit Leerzeichen auf, Einfluss in der Weise, dass Gradle versucht zu starten "C:/IBM" stattdessen angegeben " C:/IBM neu/WebSphere/AppServer/bin/manageprofiles.bat'. Es scheint, dass, möglicherweise, problem in java.lang.ProcessBuilder.
Ich versucht zu zitieren, Pfade, durch hinzufügen "/""
aber nichts funktioniert(((( was nicht zu verwundern ist, da ProcessBuilder impliziert zitieren von selbst, wenn es erforderlich ist.
So, ich bin gefragt, wenn jemand hatte das ähnliche problem und könnte mir empfehlen, wie man dieses Problem umgehen? Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn jemand es benötigt, haben wir einen workaround für dieses problem. Die Aufgabe, endlich sieht wie folgt aus:
Die grundlegende Idee ist die übergabe der Argumente an die Gradle nicht als lange Zeichenkette, sondern als eine Liste. Damit es keine Probleme gibt, wenn ein argument ein Leerzeichen enthält.
--autoprefix="last 2 versions"
, und die Räume zwischen den doublequotes waren immer werfen Dinge aus.Ändern Sie folgenden Zeilen
Diese Weise den vollständigen Pfad zu der batch-Datei angegeben.
BEARBEITET, so Wie bereits von dbenhan, ein wenig verschleiert. Diese "sollte" so etwas wie
ABER, während gradle im besonderen und windows im Allgemeinen behandeln können Pfade mit slash-Separatoren, ich habe keine Ahnung, ob
manageprofiles.bat
können, und übergeben Sie einen parameter mit einem Pfad in ihm. Vielleicht, werden Sie brauchen, um Ihre Pfade zu'c:\\IBM new\\....'
str.add('"'+wasHome+'/bin/manageprofiles.bat"')
str.add(wasHome + '/profileTemplates/default"')
Wiederverwendung der ursprünglichen Zitat (nur ein Scherz, du hast Recht 😉 )Versuchen, Diese