【问题标题】:Echo a message if a JAVA Ant task gives error如果 JAVA Ant 任务出错,则回显消息
【发布时间】:2014-03-03 16:26:48
【问题描述】:

我有一个 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 条件,即如果有错误 echo error message , else- 给出结果消息。我怎样才能做到这一点

【问题讨论】:

    标签: ant


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

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

    【讨论】:

    • 您是否运行了 javatarkfailure 目标?它将运行 javatask,因为它依赖于它。
    • 对,就这样,现在的问题是'javaerror1'会一直设置,不管有没有错误,所以即使没有错误也会回显错误信息。有什么帮助吗?
    • 你问我为什么没有错误时输出到标准错误?大声笑回显标准错误并找出没有错误时写入的内容....
    • 不,你误会了,如果没有错误,'javaerror1' 的值设置为 "",但在这种情况下它仍然设置为 null 值,因此 'if ="javaerror1"' 条件总会通过。
    • 似乎是分叉导致了空字符串的返回......至少在我的测试中。
    【解决方案2】:

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

    例如,您可以将其放入您的 &lt;echo/&gt; 语句中:

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

    您也许可以使用 set 属性:

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

    【讨论】:

    • 感谢大卫,问题是每当运行 Java ant 任务时“javaerror1”总是会被设置,所以即使 args2 没有捕获到错误,错误消息也会得到回显。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    相关资源
    最近更新 更多