5
我是Ant新手。 有人可以告訴我爲taskdef放置'classpathref'有什麼價值嗎? 它會成爲類文件的路徑嗎? 如果是的話,可以給出一個例子,因爲我試過了,它不適合我。Ant taskdef需要什麼類路徑?
我是Ant新手。 有人可以告訴我爲taskdef放置'classpathref'有什麼價值嗎? 它會成爲類文件的路徑嗎? 如果是的話,可以給出一個例子,因爲我試過了,它不適合我。Ant taskdef需要什麼類路徑?
在taskdef中,classpathref
應該是對之前定義的path
的引用。 該路徑應該包含一個包含實現該任務的類的jar文件, 或者它應該指向文件系統中的目錄,即類層次結構的根目錄。 如果你的課程在一個包中,這將不是保存你的課程的實際目錄。
下面是一個例子。
MyTask.java:
package com.x.y.z;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
public class MyTask extends Task
{
// The method executing the task
public void execute() throws BuildException {
System.out.println("MyTask is running");
}
}
注意,包名是com.x.y.z
,所以在部署時 - 讓說的類名爲classes
目錄下把 - 我們可以看到這裏的類文件系統:
$ ls classes/com/x/y/z
MyTask.class
這是一個使用任務的簡單build.xml文件:
<project name="MyProject" basedir=".">
<path id="my.classes">
<pathelement path="${basedir}/classes" />
</path>
<taskdef name="mytask" classpathref="my.classes" classname="com.x.y.z.MyTask"/>
<mytask />
</project>
請注意,classpathref
給出了classes
目錄處的點 - 類層次結構的根目錄。
運行時,我們得到:
$ ant
Buildfile: .../build.xml
[mytask] MyTask is running
你可以使用一個明確的classpath
,而不是一個 'classpathref' 類似,例如:
<property name="my.classes" value="${basedir}/classes" />
<taskdef name="mytask" classpath="${my.classes}" classname="com.x.y.z.MyTask"/>