根据该指南,向 XWiki 添加新组件需要将 jar 文件放入XE_WAR_HOME/WEB-INF/lib
. 但是,我似乎需要重新启动 tomcat 才能使用新组件。有没有办法解决这个重启?组件管理器设法从存储库安装新组件而无需重新启动 tomcat,因此原则上似乎是可行的......
在相关点上,如果我用同名的更新版本替换 jar,即使重新启动 tomcat 似乎也不会更新现有组件。那么在这种情况下我可以显式触发重新加载吗?
该指南已同时更新,并展示了如何执行此操作。
注意:目前使用码头作为容器时,以下内容不起作用;请参阅错误报告: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/
(需要另外两行来重新添加“默认”存储库)
在 Wiki UI 中,安装Extension Tweak
然后对于每个构建周期:
mvn install
my.extension.group:my-extension-id
和版本 - ie。0.1-SNAPSHOT
)因为我不想将我的答案限制在复制指南中的“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-Protection csrf.enabled = false
:。(或者,您可以通过从响应中的 HTML 读取 csrf-token 来修改脚本。)
该脚本没有错误处理。如果您在执行后没有看到更新,请执行上述步骤以找出问题所在。