[英]Writing an Eclipse-aware Ant task
我想編寫一個簡單的Ant任務,它將與Eclipse工作區交互以從中獲取一些信息。 我希望能夠使用各種Eclipse API(例如, IWorkspace
)。
我的問題是最簡單的方法是做什么。
作為Eclipse的用戶,我對Eclipse平台有很好的了解 - 但是沒有Eclipse平台的開發。 我理解,在運行時,我的Ant任務必須在與工作空間相同的JRE下調用 - 這是我願意接受的限制。
我開始創建一個Java項目來保存我的Ant任務。 我相信現在我唯一能做的就是如何在Eclipse的JAR上定義JAR依賴。 我顯然不希望依賴於一個特定的Eclipse JAR,因為它們是版本化的(例如,Eclipse的“Resources”插件)。 是否有可能讓我的Java項目構建時間依賴於“無論當前的JAR是什么資源插件”?
我認為這篇文章非常適合您的問題: http : //www.ibm.com/developerworks/rational/library/09/eclipsecustomanttasks/
它針對的是IBM Rational Application Developer,但是它基於Eclipse和AFAIS,這里沒有過多的非eclipse特定事件發生,至少沒有關於如何在Eclipse中提供任務的具體細節(編寫插件定義等)。
因此,您需要在Eclipse中運行的Ant任務。 正如您所說,很明顯這些任務正在使用Eclipse API。 截至目前,我並不真正理解他們是如何做到的。 我看了幾個人的來源,我還有疑問。
要查找Eclipse提供的所有Ant任務的位置,請執行org.eclipse.ant.core.antTasks
的插件搜索。 當我這樣做時,我會看到大約20個擴展,其中許多擴展定義了多個任務。
如果您獲得了一個貢獻其中一個任務的插件的源包,您可以查看它的源代碼。 RefreshLocalTask位於org.eclipse.core.resources中; 遺憾的是,當我將此捆綁包作為源項目導入我的工作區時,Ant任務的源無法正確鏈接。 在它們中有一個單獨的jar(在bundle中),雖然源在bundle中,但是不清楚如何編譯jar。 結果是我沒有在我的工作區中編譯Ant任務源。
您還可以使用Google作為Ant任務源; 這是RefreshLocalTask
的3.6.0源代碼 。
無論如何,在源代碼中,您可以看到對org.eclipse.core.resources.ResourcePlugin
調用,它們說明了您可能需要的內容。
啊,我在擴展點描述中看到 - 右鍵單擊其中一個搜索結果並選擇“顯示描述”,或者從Manifest編輯器那里去 - 那里有一個你可以設置的標志,“eclipseRuntime”; 文本暗示如果設置了,Eclipse將在同一個VM中啟動任務。
您可能應該多說一些您想要做的事情,因為您可以采取多種途徑。
你做不到的事情:我很確定當Eclipse啟動Ant時,它總是在一個單獨的VM中,無法回調到Eclipse。
所以也許你應該多說一下你想做什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.