最近做了一個Eclipse Plugin項目, 在各種文檔摸爬滾打了近3個月, 走了不少彎路.本文將Google這間雜貨鋪中關(guān)于eclipse plugin開發(fā)最有效的資源這里出來, 制成"藏寶圖", 希望你能在這里找到你需要的寶藏.
本文內(nèi)容涉及:
- Eclipse核心架構(gòu)OSGi
- Eclipse Plugin開發(fā)教程(推薦)
- 如何獲取幫助文檔
- 如何在Google/Bing/Baidu中搜索問題
- 如何獲取實例代碼
- 如何進行UI Automation測試
- 如何使用maven搭建持續(xù)集成環(huán)境
- 如何發(fā)布plugin
Eclipse Runtime 核心架構(gòu) OSGi
http://www.osgi.org/Technology/WhatIsOSGi
至少先要知道:
什么OSGi, 什么是Bundle, 在OSGi環(huán)境下jar包是如何組織的,這些是eclipse開發(fā)的前提.否則會被ClassLoader機制坑.
教程資源最全的地方
http://www.vogella.com/tutorials/eclipse.html
最好的資源都在這里, 基本不需要去其他地方找.
開發(fā)時如何獲取文檔
Eclipse for Plugin Deveopment -> Help Content.
- Plug-in Development Environment(PDE) Overview: PDE Overview必看
- Platform Plug-in Developer Guide: 開發(fā)文檔, Sample Code優(yōu)先在這里找.
Eclipse for Plugin Deveopment -> Dynamic Help
開啟動態(tài)幫助, 也是一個不錯的選擇
如何在搜索引擎中獲取幫助
如果使用eclipse + 問題, 搜索結(jié)果會被大量如何使用eclipse IDE的此條所淹沒.
搜索時推薦關(guān)鍵字: eclipse rcp + 你的問題, eclipse pde + 你的問題.
SWT Sample
Eclipse UI 使用的是JFace + SWT, 在這個里可以找到幾乎所有的UI Demo.
http://www.eclipse.org/swt/examples.php
UIAutomation 測試方案
SWTBot (推薦)
http://eclipse.org/swtbot/
需要編寫Java代碼
RCPTT ( 不推薦 )
可以錄制腳本, 但是直行的時候不穩(wěn)定. 如果使用它, 需要提前做好調(diào)研.
自動化構(gòu)建 - Maven Tycho plugin
- Tycho: https://www.eclipse.org/tycho/documentation.php
- Typcho Tutorials: http://www.vogella.com/tutorials/EclipseTycho/article.html
- Tycho FAQ(very useful): http://wiki.eclipse.org/Tycho/FAQ
- Demo: https://github.com/jsievers/tycho-demo
CI環(huán)境
如果需要將Test/Coverage report提交到Sonar, 參考這篇
Quality analysis on Eclipse plugins with Tycho, Sonar, Jacoco and SWTBot
如何搭建eclipse updatesite
將plugin build結(jié)果扔到一個目錄展鸡, 然后將這個目錄以HTTP的發(fā)布就OK. 使用python的SimpleHttpServer能夠很好解決這個事情.
Build時如何更新plugin的版本號?
tycho-package-plugin 可以配置版本策略, 該策略可以描述如何替換MANIFEST中的version號:
MANIFEST:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: your plugin bundle name
Bundle-SymbolicName: com.yourcompany.app.bundle
Bundle-Version: 1.0.0.qualifier
替換規(guī)則: 1.0.0.qualifier, qualifier 部分被替換.
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-packaging-plugin</artifactId>
<version>${tycho.version}</version>
<configuration>
<format>yyyyMMddHHmm</format>
</configuration>
</plugin>
打出來的plugin version是: 1.0.0.201503011210. 這里的version不會影響jar的version號.