寫(xiě)完代碼生成的框架,少不了需要ant來(lái)調用。
寫(xiě)Ant Task其實(shí)很簡(jiǎn)單,看看下面這篇Turtorial就可以了。
http://ant.apache.org/manual/tutorial-writing-tasks.html
上文可濃縮到三句話(huà)里:
1.寫(xiě)一個(gè)Java類(lèi),繼承于org.apache.tools.ant.Task。(不繼承也可以的,如果不需要那些輔助)
2.實(shí)現execute()方法,Ant就會(huì )進(jìn)行調用。
3.參數要從build.xml傳入時(shí),Task類(lèi)只需擁有同名的變量和setter函數,Ant就會(huì )為你注入。
1.Ant Task的標準實(shí)現
import org.apache.tools.ant.Task;
public class HelloWorld extends Task
{
String msg;
public void execute()
{
System.out.println(msg);
}
public void setMsg(String msg)
{
this.msg = msg;
}
}
將上面的文件編譯打包成helloworld.jar
build.xml調用如下
<target description="Use the Task">
<taskdef name="helloworld" classname="HelloWorld" classpath="helloworld.jar"/>
<helloworld msg="Hello World"/>
</target>
另外
1.取得build.xml中的公共變量:projectName = getProject().getProperty("project.name");
2.取得復合的屬性就要復雜一點(diǎn),該模式可以擴展到比下面復雜得多的情況。
<target>
<helloworld>
<message msg="Hello "/>
<message msg="World"/>
</helloworld>
</target>
1.先定義叫Message的內部類(lèi)以表示Message節點(diǎn),該類(lèi)有一個(gè)msg屬性,同樣有一個(gè)setter函數,使其可以在build.xml中賦值
public class Message extends Object
{
public Message()
{ }
String msg;
public void setMsg(String msg) { this.msg = msg; }
public String getMsg() { return msg; }
}
2.再根據Ant的框架,定義給Helloworld注入message的createXXX函數和持有Message列表的messages對象,ant就會(huì )為你完成自動(dòng)注入。
Vector msgs = new Vector();
public Message createMessage()
{
Message msg = new Message();
messages.add(msg);
return msg;
}
聯(lián)系客服