Ant – Echo수행 시 timestamp 찍기

echo를 이용하여 메시지를 출력할 때 시간을 같이 출력하는 스크립트

  • echo의 속성을 파라미터로 전달받아, message속성에 현재 시간만 추가하여 출력하는 macrodef 작성
  • macrodef에서 사용하는 현재 시간은 <tstamp>를 사용하지 않고, javascript를 이용하여 계산
    (tstamp는 현재시간을 property에 세팅하는데, property는 값을 재 세팅할 수 없으므로, 한번 시간이 세팅되면, 다음부터 시간이 재 세팅될 수 없다. 이에 반해, javascript를 이용하면, property에 값을 재세팅할 수 있다.- “Ant – property값 변경” 참조)
<target name="test">
	<echo message="hello world"/>
	<echo.with.time message="hello world"/>
</target>

<macrodef name="echo.with.time">
	<attribute name="message" default=""/>
	<attribute name="file"/>
	<attribute name="append" default="false"/>
	<attribute name="level" default="warning"/>
	<attribute name="encoding" default=""/>
	<attribute name="force" default="false"/>
	<sequential>
		<set.curr.time now.time.prop="now.time"/>
		<echo message="@{message} [${now.time}]"
			  file="${file}"
			  append="${append}"
			  level="${level}"
			  encoding="${encoding}"
			  force="${force}"
		/>
	</sequential>
</macrodef>

<!--
	this scriptdef only can be run under Ant 1.8.3 later with
	bsf.jar 2.4 or later (include commons-logging.jar and js.jar with 1.5R4 and higher)
	see more at ant scriptdef task manual
-->
<scriptdef name="set.curr.time" language="javascript" manager="bsf">

	<attribute name="now.time.prop"/>
	<![CDATA[
		var now = new Date();
		var nowTime = now.getFullYear() + "/" 
                              + (now.getMonth()+1) + "/" + now.getDate() 
                              + "/" + now.getHours() + ":" + now.getMinutes() 
                              + ":" + now.getSeconds();
		//self.log(nowTime);
		var propName=attributes.get("now.time.prop");
		project.setProperty(propName, nowTime);			

	]]>
</scriptdef>

 

 

댓글 남기기