eclipse插件开发_开发Eclipse插件
eclipse插件開發
最近,我開始與一個團隊合作開發Eclipse插件。 團隊開發了一個很棒的插件,可以實現預期的目的。 因此,我檢查了源并嘗試構建它。 項目源包含所有必需的庫,并且只能在Eclipse中構建。 在當今不斷交付的世界中,這是一個主要障礙,因為無法在詹金斯上建立這樣的項目。 該項目不僅包含必需的庫,而且完整的eclipse設置也保留為源代碼的一部分,因此我想先進行改進。 我在項目中創建了POM.xml并刪除了設置和庫。 構建工作正常,但是當我在Eclipse中打開項目時,情況一團糟。 那里什么都沒有!
花了一段時間才意識到Eclipse和Maven是兩個不容易融合的世界。 甚至最小的東西(如工件版本和Bundle版本)也不會輕易收斂。 在Maven中,任何東西都可以是版本,例如21快照。 但是在Eclipse中有一些標準,必須將其命名為[number]。[number]。[number] .qualifier,例如1.1.21.qualifier。
為了彌合兩個世界之間的鴻溝,Sonatype已將Tycho貢獻給了Eclipse生態系統。 將插件添加到eclipse存儲庫中:
<repository> <id>juno</id> <layout>p2</layout> <url>http://download.eclipse.org/releases/juno</url> </repository><plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-versions-plugin</artifactId> <version>0.18.1</version> </plugin><plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>target-platform-configuration</artifactId> <version>0.18.1</version> <configuration> <pomDependencies>consider</pomDependencies> <environments> <environment> <os>linux</os> <ws>gtk</ws> <arch>x86_64</arch> </environment> </environments> </configuration> </plugin>這里有幾點要注意:
- 如果該插件用于特定的Eclipse平臺,則應添加該插件的存儲庫。
- 該插件可以使用來自POM或MANIFEST.MF的依賴項。 如果從POM使用依賴項,則設置pomDependencies
Tycho插件還帶來了一組用于版本更新,surefire測試等的插件。可以單獨調用這些插件以執行不同的目標,例如,可以通過以下方式使用版本插件來設置版本:
mvn tycho-versions:set-version -DnewVersion=1.1.1-SNAPSHOT這將在POM中設置1.1.1-SNAPSHOT版本,在MANIFEST.MF中設置1.1.1.qualifier。
盡管插件提供了很多功能,但也有一些限制。 插件無法為PDE生成正確的Eclipse設置。 因此,如果我們不保留這些設置,則需要再次生成這些設置。 插件頁面上沒有列出其他限制。
在此之后,我們現在已經能夠在某種意義上彌合兩個世界。 生成Eclipse插件的Maven構建是可能的。
插件類加載器
在Eclipse PDE中,有插件和片段。 插件是提供功能的完整模塊,片段是將自身附加到父插件然后增強其功能的模塊。 因此,插件可以附加n個片段,從而在運行時對其進行增強。
我們有一個基礎插件,它提供了一些基本功能,并且在其上構建了一個片段以在插件中使用Hadoop1.x。 一段時間后,要求也支持Hadoop2.x。 現在,這兩個庫彼此不兼容。 因此,需要一些解決方法來實現此目的
幸運的是,基于OSGI的Eclipse與其他Java應用程序相比,具有不同的類加載機制。 通常,只有一個/層次結構類加載器可以加載整個應用程序。 現在,在這種情況下,如果將兩個不兼容的jar捆綁在一起,則只會加載一個。 但是在eclipse中,每個插件都有自己的類加載器,可以加載自己的類。 現在,這提供了很多機會,例如支持同一庫的不同版本。 此功能擴展到僅插件,而不是片段。 片段沒有自己的類加載器,而是使用父插件類加載器。
我們本可以使用插件類加載器支持,但是hadoop庫是按片段而不是插件加載的。 我們將片段轉換為插件,這需要完成重構現有代碼庫的完整任務。 在基于hadoop 1.x的插件形成之后。 我們可以為hadoop 2.x制作更多插件。 每個插件都加載自己的一組類。 現在唯一的要求是擁有更多的PermGem空間,因為無法將完整的插件加載到默認的PermGem空間中。
翻譯自: https://www.javacodegeeks.com/2014/07/developing-eclipse-plugins.html
eclipse插件開發
總結
以上是生活随笔為你收集整理的eclipse插件开发_开发Eclipse插件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mht安卓打开软件(mht安卓)
- 下一篇: linux设置时间命令(linux 设置