Xwiki重装组件jar

时间:2014-10-02 05:53:01

标签: tomcat xwiki

根据guide,向XWiki添加新组件涉及将jar文件放入XE_WAR_HOME/WEB-INF/lib。但是我似乎需要重新启动tomcat才能使用新组件。有没有办法解决这个重启?组件管理器设法从存储库安装新组件而不重新启动tomcat,因此原则上似乎可能......

在相关的一点上,如果我用一个具有相同名称的更新版本替换jar,即使重新启动tomcat也不会更新现有组件。那么在这种情况下我可以明确地触发重载吗?

1 个答案:

答案 0 :(得分:2)

指南已经同时更新,并显示了如何做到这一点。

注意:当使用jetty作为容器时,以下内容不起作用;请参阅: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/ 

(需要另外两行重新添加"默认" repos)

在Wiki UI中,安装Extension Tweak

然后对于每个构建周期:

  • 通过mvn install
  • 构建您的扩展程序
  • 转到Wiki
  • 中的扩展部分
  • 在"高级搜索"中查找您的扩展程序(您的本地maven回购无法搜索,因此您需要告诉完整的ID - 即my.extension.group:my-extension-id和版本 - 即。0.1-SNAPSHOT
  • 删除当前安装的扩展程序
  • 通过/ xwiki / bin / view / Admin / 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}"

如果您要使用此脚本,则必须通过设置xwiki.properties来禁用csrf.enabled = false中的CSRF保护。 (或者,您可以通过从响应中的HTML中读取csrf-token来修改脚本。)

该脚本没有错误处理。如果执行后没有看到更新,请执行上述步骤以找出问题所在。