2014-03-03 47 views
1

我有一個Java Ant任務是─回聲消息如果Java Ant任務提供了錯誤

<target name="javatask"> 
<java classname="arq.sparql" fork="true" outputproperty="javaresult" errorproperty="javaerror1"> 
     <arg value="--data=${tools.dir}/build-config/SPARQL/cpldm.ttl"/> 
     <arg value="--query=${queryFile}"/> 
     <jvmarg value="-Xmx1024M"/> 
     <classpath> 
      <path> 
       <fileset dir="${jena.dir}/lib"> 
       <include name="*.jar"/> 
       </fileset> 
     </path> 
     </classpath> 
    </java> 
     <echo message="Error at: ${javaerror1} in ${queryFile}"/> 
     <echo message="Result for ${queryFile} is: ${javaresult}"/> 
</target> 

現在我想的錯誤消息是回聲版僅如果有一個「javaerror」和如果沒有錯誤,結果消息將被回顯。所以基本上它的if-else條件,即如果有錯誤回聲錯誤消息,否則 - 給結果消息。我該如何做到這一點

回答

1
<target name="javataskfailure" if="javaerror1" depends="javatask"> 
    <echo message="Error at: ${javaerror1} in ${queryFile}"/> 
    <echo message="Result for ${queryFile} is: ${javaresult}"/> 
</target> 

該任務只會在「javaerror1」屬性存在時執行。

+0

你運行javatarkfailure目標是什麼?它將運行javatask,因爲它依賴於它。 – MarkOfHall

+0

對,就這樣做了,現在問題是'javaerror1'會一直設置是否存在錯誤,所以即使沒有錯誤,錯誤消息也會被回顯。任何幫助? –

+0

你問我爲什麼沒有錯誤時輸出到標準錯誤?大聲笑回聲的標準錯誤,並找出什麼是寫入它,當沒有錯誤.... – MarkOfHall

1

最新版本的Ant包含一個新的If and Unless屬性,幾乎可以在任何任務中設置。我在開始工作時遇到了一些問題,而且您確實需要安裝Ant 1.9.1或更高版本,但確實會使if/else條件更容易處理。

例如,你可以把這個在您的<echo/>聲明:

<echo unless:blank="javaerror1">Error at: ${javaerror1} in ${queryFile}</echo> 

您可能能夠使用屬性改爲:

<echo if:set"javaerror1">Error at: ${javaerror1} in ${queryFile}</echo> 
+0

感謝大衛,問題是「javaerror1」在Java ant任務運行時總是會被設置,所以即使沒有被args2捕獲的錯誤,錯誤消息也會得到迴應。 –

相關問題