1

我在ant-contrib中找到了ant 任务 ,但我在那里丢失了参数。所以我需要在非安静模式下启动 ant以获取输出(另外看到不需要的ant消息):stopwatchecho levelduration formatstopwatch elapsed echo

<target name="build">
    <stopwatch name="foo"/>

    <sleep milliseconds="50"/>   <!-- do something -->
    <echo level="info" message="message not wanted to see normally"/>

    <stopwatch name="foo" action="elapsed"/>
</target>

或者,我只看到编写自己的目标或宏,例如

<macrodef name="echo-with-time">
    <attribute name="message" default="" />
    <attribute name="level" default="warning" />
    <sequential>
        <local name="now"/>
        <tstamp><format property="now" pattern="yyyy-MM-dd HH:mm:ss,SSS"/> </tstamp>
        <echo level="@{level}" message="[${now}] @{message}" />
    </sequential>
</macrodef>

问题:有没有办法只输出持续时间(比如用所用时间属性计算)?

4

1 回答 1

0

<scriptdef>您可以在您想要计时的事物的开始和结束处使用自定义的时间读取当前时间戳,然后使用math任务计算差异。

像这样的东西:

<var name="start" unset="true"/>
<var name="stop" unset="true"/>
<var name="duration" unset="true"/>

<unix-timestamp property="start" />
<!-- Do something to be timed -->
<unix-timestamp property="stop" />
<math result="duration" operand1="${stop}" operation="-" operand2="${start}" datatype="int"/>
<echo message="Task took ${duration} seconds"/>

任何受支持语言<unix-timestamp>的 a在哪里<scriptdef>

<scriptdef name="unix-timestamp" language="javascript">
    <attribute name="property" />
    <![CDATA[
        var property = attributes.get("property");
        var nowSeconds = Math.round(new Date().getTime()/1000);
        project.setProperty(property, nowSeconds);
    ]]>
</scriptdef>
于 2016-10-04T13:55:32.287 回答