如果JavaAnt任务出现错误,则回显消息

如果JavaAnt任务出现错误,则回显消息,ant,Ant,我有一个JavaAnt任务,它是- <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

我有一个JavaAnt任务,它是-

<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条件,也就是说,如果有错误,回显错误消息,else-给出结果消息。我怎样才能做到这一点


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

只有当“javaerror1”属性存在时,任务才会执行。

最新版本的Ant包含一个新属性,几乎可以在任何任务中设置。我在让它工作时遇到了一些问题,您确实需要Ant 1.9.1或更高版本,但它确实使if/else条件更容易处理

例如,您可以将其放在
语句中:

<echo unless:blank="javaerror1">Error at: ${javaerror1} in ${queryFile}</echo>
在${queryFile}中的${javaerror1}处出错
您可以改为使用set属性:

<echo if:set"javaerror1">Error at: ${javaerror1} in ${queryFile}</echo>
在${queryFile}中的${javaerror1}处出错

您是否运行了javatarkfailure目标?它将运行javatask,因为它依赖于它。好了,完成了,现在的问题是“javaerror1”将一直设置是否有错误,因此即使没有错误,错误消息也会被回显。有什么帮助吗?你是在问我为什么在没有错误的情况下输出标准错误?LOL回显标准错误,并找出在没有错误时写入的内容……不,你搞错了,如果没有错误,“javaerror1”的值设置为“”,但在本例中仍然设置为空值,因此“if=”javaerror1“'条件将始终通过。似乎叉导致返回空字符串。。。。至少在我的测试中是这样。谢谢David,问题是当Java ant任务运行时,“javaerror1”总是会被设置的,所以即使没有被args2捕获的错误,错误消息也会被回显。