簡體   English   中英

編寫一個支持Eclipse的Ant任務

[英]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任務源; 這是RefreshLocalTask3.6.0源代碼

無論如何,在源代碼中,您可以看到對org.eclipse.core.resources.ResourcePlugin調用,它們說明了您可能需要的內容。

啊,我在擴展點描述中看到 - 右鍵單擊​​其中一個搜索結果並選擇“顯示描述”,或者從Manifest編輯器那里去 - 那里有一個你可以設置的標志,“eclipseRuntime”; 文本暗示如果設置了,Eclipse將在同一個VM中啟動任務。

您可能應該多說一些您想要做的事情,因為您可以采取多種途徑。

  1. Eclipse提供了一些可以在構建腳本中使用的Ant任務。 這里有幾個。 還有更多,所以在Eclipse文檔中搜索“ant任務”; 它們分散在不同的頁面中。 Eclipse Preferences(Window..Preferences,然后選擇Ant / Runtime,並查看Classpath選項卡中的“Contributed Entries”)顯示了Eclipse從Eclipse調用Ant時為運行時提供的Ant任務列表; 只要你包含正確的jar,你就可以自己調用這些任務。
  2. 可以從Ant任務中啟動Eclipse,因為可以從Java啟動Eclipse。 您需要包括正確的罐子並撥打正確的電話; 您還需要正確配置Eclipse。 “org.eclipse.core.runtime.adaptor.EclipseStarter”應該給你一些細節。
  3. 也許你可以使用Eclipse定義的一個或多個變量來啟動Ant(或任何其他程序)。 嘗試創建外部工具配置(在“運行”菜單的底部) - 選擇一個Ant構建並嘗試使用參數(來自Main選項卡)或環境變量(來自Environment)選項卡進行自定義。 兩者都允許您訪問Eclipse變量。 但是當然這些只是您可以傳遞到Ant腳本的值,而不是可以調用方法的任何句柄。

你做不到的事情:我很確定當Eclipse啟動Ant時,它總是在一個單獨的VM中,無法回調到Eclipse。

所以也許你應該多說一下你想做什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM