2014-10-02 57 views
1

根據guide,向XWiki添加新組件涉及將該jar文件放入XE_WAR_HOME/WEB-INF/lib。不過,我似乎需要重新啓動tomcat才能使用新組件。有沒有解決這個重啓的方法?組件管理器管理從存儲庫安裝新組件,而不重新啓動tomcat,所以原則上似乎可能...Xwiki重新加載組件jar

在相關的一點上,即使重新啓動tomcat似乎不更新現有組件,如果我更換一個jar與同名的更新版本。那麼在這種情況下,我可以明確觸發重新加載嗎?

回答

2

本指南已在此期間進行了更新並顯示瞭如何處理此問題。

注意:當使用jetty作爲容器時,以下方法不起作用;見bug報告:http://jira.xwiki.org/browse/XWIKI-12781

簡而言之:本地Maven回購添加到xwiki.properties

extension.repositories=local:maven:file://${sys:user.home}/.m2/repository 
extension.repositories=maven-xwiki:maven:http://nexus.xwiki.org/nexus/content/groups/public 
extension.repositories=extensions.xwiki.org:xwiki:http://extensions.xwiki.org/xwiki/rest/ 

(另兩條線都需要重新添加「默認」回購)

在維基UI,安裝Extension Tweak

然後,對於每個構建週期:

  • 通過mvn install
  • 建立你的擴展到在Wiki
  • 查找您的擴展中的「高級搜索」(本地Maven回購是不可搜索,那麼你需要告訴完整ID擴展部分 - 即my.extension.group:my-extension-id和版本 - 即。 0.1-SNAPSHOT
  • 刪除當前安裝的擴展
  • 沖洗通過/ XWiki實現/斌/視圖緩存/管理/ InstalledExtensionsTweak
  • 查找您的擴展中的「高級搜索」了,並安裝它

因爲我不想讓我的答案限制在指南中照搬「HOWTO」,這裏是一個小的腳本,應該做的「重裝」的一部分(即使用它運行後mvn install)爲您提供:

# "config" section: 

# variables should be URL encoded; '%3A' is ':' 
EXTENSION_ID=org.xwiki.contrib%3Aapplication-mocca-calendar-ui 
VERSION=2.5-SNAPSHOT 
BASE_URL=http://localhost:8080/xwiki 

# of course you can use curl here if you prefer 
WGET="wget -q -O /dev/null --auth-no-challenge --http-user=Admin --http-password=admin" 
# alternative for debugging 
#WGET="wget -S -O - --auth-no-challenge --http-user=Admin --http-password=admin" 

QUERY="extensionId=${EXTENSION_ID}&extensionVersion=${VERSION}&extensionNamespace=wiki%3Axwiki&form_token=dummy" 

set -o errexit 

# first remove the old version of the extension 
$WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=uninstall&${QUERY}" 

# confirm uninstall 
sleep 1 
$WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=continue&${QUERY}" 
# confirm uninstall again (this time to "remove unused pages") 
sleep 1 
$WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=continue&${QUERY}" 

# flush the cache 
$WGET "${BASE_URL}/bin/get/Admin/InstalledExtensionsTweak?basicauth=1&eaction=clean_confirm" 

# add new version 
$WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=install&${QUERY}" 

# confirm: start adding 
sleep 1 
$WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=continue&${QUERY}" 

# just in case we get a conflict: overwrite with new version 
sleep 1.5 
$WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=continue&autoResolve=true&versionToKeep=NEXT&${QUERY}" 

如果您要使用此腳本,您必須通過設置:csrf.enabled = false來禁用xwiki.properties中的CSRF保護。 (或者,您可以通過從響應中的HTML中讀取csrf令牌來修改腳本。)

該腳本沒有錯誤處理。如果執行後沒有看到更新,請執行上面列出的步驟來確定哪裏出了問題。

+0

棒極了。感謝這樣一個詳細的答案。 – beldaz 2015-11-16 21:25:59