2017-05-19 66 views
0

我試圖找回在類Core.java定義路線如下:在Ant文件轉義引號字符

public static final String PLATFORM_VERSION = "3.0.1_170518"; 

所以我創建了一個測試Ant文件(因爲我想將它保存爲編譯過程中使用的ant屬性)。

<?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="&quot;ResultadoIntermedio&quot;: ${coreVersionTemp}"/> 
    <exec executable="bash" 
     outputproperty="coreVersion" 
     failonerror="true"> 
     <arg value="-c"/> 
     <arg value="echo ${coreVersionTemp} | cut -d'\&quot;' -f2"/> 
    </exec> 
    <echo message="Resultado: ${coreVersion}"/> 
</target>  

螞蟻代碼被劃分到定位確切位置失敗。螞蟻回來:

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 

正如你所看到的,錯誤是'cut'命令。 ResultadoIntermedio是正確的。 如果執行上的bash完整的命令,我們預期的結果,以及:

$ cat ./Core.java | grep VERSION | cut -d '"' -f2 
3.0.1_170518 

的問題是,我認爲,在切割的-d選項後轉義字符。 我曾嘗試:

'"' 
'\"' 
\'\"\' 
'&quot;' 
\'&quot;\' 
&apos;&quot;&apos; 

和其他一些組合...我怎麼能正確地做到這一點?

非常感謝。

回答

0

以一種變通方法取代「'爲‘:’與JavaScript的作品很好,但有點討厭解決財產

<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="&quot;ResultadoIntermedio&quot;: ${coreVersionTemp}"/> 
    <!-- <propertyregex property="coreVersionTemp2" input="coreVersionTemp" regexp="&quot;" replace=":" global="true"/> --> 
    <script language="javascript"> 
     var temp = project.getProperty("coreVersionTemp"); 
     project.setProperty("coreVersionTemp", temp.replaceAll("\"", ":")); 
    </script> 
    <echo message="&quot;ResultadoIntermedio2&quot;: ${coreVersionTemp}"/> 
    <exec executable="bash" 
     outputproperty="coreVersion" 
     failonerror="true"> 
     <arg value="-c"/> 
     <arg value="echo '${coreVersionTemp}' | cut -d: -f2"/> 
    </exec> 
    <echo message="Resultado: ${coreVersion}"/> 
</target>  
</project>