寫在前面
Confluence插件開發(fā)系列為我個人在實際項目中積累的開發(fā)經(jīng)驗赃春,所有內(nèi)容基于官方文檔教程和Google搜索兄纺,在開發(fā)過程中遇到的一些內(nèi)容官方文檔中沒有詳細說明的地方做一些個人的記錄奕巍。如果英文能力好的同學可自行閱讀官方指導文檔進行開發(fā)窘面,本系列指導說明適用于期望快速上手不需要深入了解官方指導文檔的同學。
Confluence簡單介紹
Confluence是Atlassian公司一款產(chǎn)品件相,是一個專業(yè)的知識管理協(xié)同軟件再扭,方便企業(yè)構(gòu)建wiki文檔,使用簡單方便夜矗,強大的編輯器和協(xié)同文檔處理能力讓企業(yè)辦公中方便管理知識文檔泛范、積累經(jīng)驗。官網(wǎng)地址
Confluence插件是什么紊撕?可以做什么敦跌?
Confluence插件是對軟件功能的擴展,通過插件開發(fā)不局限于官方軟件能力逛揩,可以實現(xiàn)一些定制化的能力例如:企業(yè)定制化的消息通知、增加自定義wiki內(nèi)用戶同步麸俘、增加單點登錄能力等等辩稽。插件包括兩種:(1)系統(tǒng)app,提供系統(tǒng)核心能力(2)自定義的第三方插件:自定義開發(fā)的或者第三方開發(fā)者定制的擴展confluence已有功能的程序从媚。
Confluence Plugin(or add-on)是由一個或者多個子模塊組成逞泄,插件可以執(zhí)行很多事情,比如說監(jiān)聽事件,注冊servlet執(zhí)行加載頁面等等喷众,插件是由java語言開發(fā)各谚。
環(huán)境準備
本文開發(fā)環(huán)境以及相關(guān)示例在macos系統(tǒng)內(nèi)執(zhí)行,windows相關(guān)的操作步驟大體一致到千,僅是安裝包不同昌渤,文中在相關(guān)的位置會標注說明。
編程語言:Java
Java version:示例中使用jdk1.8版本
IDE:自己喜歡的工具就好憔四,本文示例使用Intellj
著手開發(fā)Confluence插件
Confluence plugin SDK 安裝
下載安裝包
執(zhí)行此操作之前膀息,你需要正確安裝JDK,JDK安裝自行百度或者谷歌了赵,建議安裝JDK1.8版本潜支。
WIndow安裝Plugin SDK
通過官方下載鏈接下載exe安裝包,執(zhí)行安裝柿汛,地址
Mac OSX下安裝
有兩種安裝方式冗酿,通過dmg安裝包安裝,下載地址
也可以直接使用homebrew進行安裝络断,這里方便以后卸載和升級建議使用homebrew安裝裁替,操作如下:
- 增加Tap brew tap atlassian/tap
- 安裝sdk brew install atlassian/tap/atlassian-plugin-sdk
- 如果后續(xù)需要升級可以執(zhí)行 brew update brew upgrade atlassian/tap/atlassian-plugin-sdk
注意:國內(nèi)homebrew下載地址可能會比較慢,建議修改homebrew源妓羊,修改操作可以參考:http://mirrors.ustc.edu.cn/help/homebrew-cask.git.html
其他系統(tǒng)安裝SDK
RPM/RHEL/CentOs/Fedora(YUM)
Debian/Ubuntu
上述系統(tǒng)安裝SDK請參照這里
驗證sdk安裝成功
系統(tǒng)打開命令行終端輸入atlas-version輸入如下內(nèi)容即表示安裝成功
? ~ atlas-version
ATLAS Version: 8.0.16
ATLAS Home: /usr/local/Cellar/atlassian-plugin-sdk/8.0.16/libexec
ATLAS Scripts: /usr/local/Cellar/atlassian-plugin-sdk/8.0.16/libexec/bin
ATLAS Maven Home: /usr/local/Cellar/atlassian-plugin-sdk/8.0.16/libexec/apache-maven-3.5.4
AMPS Version: 8.0.2
--------
Executing: /usr/local/Cellar/atlassian-plugin-sdk/8.0.16/libexec/apache-maven-3.5.4/bin/mvn --version -gs /usr/local/Cellar/atlassian-plugin-sdk/8.0.16/libexec/apache-maven-3.5.4/conf/settings.xml
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/Cellar/atlassian-plugin-sdk/8.0.16/libexec/apache-maven-3.5.4
Java version: 9, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.3", arch: "x86_64", family: "mac"
創(chuàng)建一個"Hello World"的插件
打開終端程序胯究,輸入命令:
atlas-create-confluence-plugin
提示輸入groupId、artifactId躁绸、version裕循、package后輸入Y確認自動創(chuàng)建項目工程
[圖片上傳失敗...(image-7df143-1587051225640)]
[圖片上傳失敗...(image-76df27-1587051225640)]
在當前目錄下可以看到創(chuàng)建好的子目錄plugin-demo,進入到plugin-demo中我們可以看到目錄結(jié)構(gòu)如下:
.
├── LICENSE 項目的license
├── README 說明文檔
├── pom.xml pom文件
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── atlassian
│ │ └── tutorial
│ │ └── myPlugin
│ │ ├── api
│ │ │ └── MyPluginComponent.java 示例Api接口
│ │ └── impl
│ │ └── MyPluginComponentImpl.java 示例Api代碼實現(xiàn)類
│ └── resources
│ ├── META-INF
│ │ └── spring
│ │ └── plugin-context.xml spring-context配置文件
│ ├── atlassian-plugin.xml 插件項目主要配置文件
│ ├── css
│ │ └── myPlugin.css 示例css文件
│ ├── images
│ │ ├── pluginIcon.png 插件圖片
│ │ └── pluginLogo.png 插件logo圖片
│ ├── myPlugin.properties 項目相關(guān)的變量配置文件
│ └── js
│ └── myPlugin.js 插件示例js文件
└── test 單元測試目錄以及資源文件
├── java
│ ├── it
│ │ └── com
│ │ └── atlassian
│ │ └── tutorial
│ │ └── myPlugin
│ │ └── MyComponentWiredTest.java
│ └── ut
│ └── com
│ └── atlassian
│ └── tutorial
│ └── myPlugin
│ └── MyComponentUnitTest.java
└── resources
└── atlassian-plugin.xml
至此净刮,一個最簡單的空插件已經(jīng)創(chuàng)建完成了
插件開發(fā)常用命令
首先介紹一下常用命令
atlas-clean
進入到插件根目錄執(zhí)行剥哑,清理刪除target目錄
atlas-mvn package
進入到插件根目錄執(zhí)行,對當前插件編譯淹父、打包操作株婴,正確打包結(jié)束后,目標文件為target/xxxxx.jar target/xxxxx.obr兩個文件暑认,這兩個文件都可以上傳部署到Confluence系統(tǒng)內(nèi)困介。
atlas-run
本地運行Confluence測試環(huán)境安裝插件,需要在插件根目錄執(zhí)行蘸际,因啟動一個完成的Confluence測試環(huán)境需要內(nèi)容較多座哩,建議至少保證系統(tǒng)空閑2GB內(nèi)存,運行成功后可打開瀏覽器輸入http://localhost:1990/confluence進入測試界面粮彤,默認的管理員賬號密碼為admin/admin
示例代碼
https://github.com/chaoyz/plugin-demo