提供作業和類型

當您的外掛程式提供 Ant 作業和類型以及對其進行除錯時,作業和類型可存取所提供的外掛程式內的所有類別。例如,由 org.eclipse.core.resources 外掛程式所提供的 eclipse.refreshLocal 作業,是 IResource.refreshLocal() 方法的封套。

外掛程式所構成的作業和類型不可放置在任何外掛程式程式庫中。他們必須放置在不同的 JAR 中。這表示外掛程式類別沒有外掛程式所提供之作業和類型的存取權。(請參閱為何作業和類型要不同的 JAR ?,以取得詳細資訊。)

org.eclipse.ant.core.antTasks 延伸點提供如何在 plugin.xml 檔案中指定新作業的範例。

進度監視器

呼叫 AntRunner 時,如果已通過一個,則 Eclipse Ant 支援會提供對 IProgressMonitor 的存取權。對進度監視器有存取權的優點之一是長時間執行的作業可以檢查以察看使用者是否有要求取消。進度監視器物件是由 Ant 專案的參照中取得。請注意,監視器只在以有效的進度監視器呼叫 AntRunner.run(IProgressMonitor) 方法時可用。下列程式碼片段顯示如何從作業專案中取得進度監視器:

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.eclipse.ant.core.AntCorePlugin;
import org.eclipse.core.runtime.IProgressMonitor;

public class CoolTask extends Task {

public void execute() throws BuildException {
	IProgressMonitor monitor = 
		(IProgressMonitor) getProject().getReferences().get(AntCorePlugin.ECLIPSE_PROGRESS_MONITOR);
	if (monitor == null) {
		...
         } else {
		...
	}
}
}

提供作業和類型時的重要規則

下列應可作為外掛程式開發人員所使用的核對清單:

為何作業和類型要不同的 JAR?

基本上,在 Eclipse 上執行 Ant 有兩個需求,但是並不十分適合外掛程式模型:

在執行時期,外掛程式類別載入器無法展開他們的類別路徑,而且外掛程式無法變更他們的相依關係。同時,作業和類型有不同的 JAR,這是對外掛程式類別載入機制的有益隔離。具有這些由外掛程式宣告的額外 JAR,也將允許提供外掛程式給 Ant 類別路徑。