Ich versuche, einen String in der Klasse Core.java definiert abzurufen, wie folgt:Flucht Anführungszeichen in ant Datei
Sopublic static final String PLATFORM_VERSION = "3.0.1_170518";
habe ich einen Test ant-Datei erstellt (weil ich es gespeichert werden soll als eine ant-Eigenschaft, die im Kompilierungsvorgang verwendet werden soll).
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="get-core-version" name="test">
<target name="get-core-version">
<exec executable="bash"
outputproperty="coreVersionTemp"
failonerror="true">
<arg value="-c"/>
<arg value="cat ./Core.java | grep VERSION"/>
</exec>
<echo message=""ResultadoIntermedio": ${coreVersionTemp}"/>
<exec executable="bash"
outputproperty="coreVersion"
failonerror="true">
<arg value="-c"/>
<arg value="echo ${coreVersionTemp} | cut -d'\"' -f2"/>
</exec>
<echo message="Resultado: ${coreVersion}"/>
</target>
Die Ameise Code ist genau dort, wo versagt zu lokalisieren aufgeteilt. Die Ameise kehrt:
Buildfile: E:\git\test.xml
get-core-version:
[echo] "ResultadoIntermedio": public static final String PLATFORM_VERSION = "3.0.1_170518";
BUILD FAILED
E:\git\test.xml:14: exec returned: 1
Total time: 0 seconds
Wie Sie sehen können, wird der Fehler auf ‚Schnitt‘ Befehl. ResultadoIntermedio ist korrekt. Wenn wir die volle Kontrolle über bash ausführen, haben wir das erwartete Ergebnis auch:
$ cat ./Core.java | grep VERSION | cut -d '"' -f2
3.0.1_170518
Das Problem ist, glaube ich, in den Escape-Zeichen nach der Option -d Schnitt. Ich habe versucht:
'"'
'\"'
\'\"\'
'"'
\'"\'
'"'
Und einige andere Kombinationen ... wie kann ich dies richtig tun?
Vielen Dank.