自定义task

import org.apache.tools.ant.Task; import org.apache.tools.ant.Project; import org.apache.tools.ant.BuildException; /** Apache Ant 支持自定义任务。下面是使用Java自定义Ant任务的demo * * task class: TimerTask * properties: action:[init, print] * sub task: <subTaskOne, FooTask> */ public class TimerTask extends Task { // +--+--+ 给自定义任务添加属性 +--+--+ /** * 在xml中用下列方式引用 * <timer action=”init” /> */ private String action; // String getter() public String getAction() { return action; } // void setter(String) public void setAction(String string) { action = string; } // +--+--+--+--+--+--+--+--+--+--+--+--+ // +--+--+ 再嵌套子任务 +--+--+ /** * 使用样例: * <taskdef name="timer" classname="TimerTask" classpath= "." /> * <taskdef name="subTaskOne" classname="FooTask" classpath="." /> * * <timer action=”init” > * <subTaskOne/> * </timer> * * FooTask是另外一个自定义的Task */ private FooTask foo = null; public void addSubTaskOne(FooTask foo) { this.foo = foo; } // +--+--+--+--+--+--+--+--+--+--+--+--+ // private static final String TIME_PROPERTY_INTERNAL = "timer.msecs" ; private static final String TIME_PROPERTY_NAME = "timer.passed" ; // public void execute() throws BuildException { System.out.println( "I am a timer" ); if (this.getOwningTarget() == null) return; // Project对象的生命期是整个Build,并且可以通过setProperty和getProperty等方法保存/获取值 Project proj = this.getOwningTarget().getProject(); String strTime = proj.getProperty(TIME_PROPERTY_INTERNAL); try { long currMSecs = System.currentTimeMillis(); if (action.equals( "print" )) { if (strTime == null) proj.setProperty(TIME_PROPERTY_NAME, "Timer not initilized" ); else { long startMSecs = Long.parseLong(strTime); long passedSecs = currMSecs - startMSecs; int minutes = ( int ) ( passedSecs * 1.0 / (1000 * 60 * 60) ); int hours = minutes / 60; minutes = minutes % 60; strTime = hours + " hours " + minutes + " minutes" ; proj.setProperty(TIME_PROPERTY_NAME, strTime); } } else if (action.equals( "init" )) { proj.setProperty(TIME_PROPERTY_INTERNAL, Long.toString(currMSecs)); } } catch (NumberFormatException nfe) { throw new BuildException(nfe.getMessage()); } // 执行嵌套的子任务 if (foo != null) { foo.execute(); } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值