我使用 xwiki Enterprise 7.4。安装扩展的官方方法是使用导入功能或扩展管理器。两种方式都需要用户交互。我想自动化扩展安装过程,所以扩展安装不需要用户交互。可能吗?我已经通过 REST API 自动创建空间/页面。也许可以使用 REST API 来做到这一点,我在文档中找不到它。
为什么我需要它?这很简单:我已经为我的应用程序自动化了部署/迁移过程的所有步骤,我也想自动化 xwiki 扩展安装。
我使用 xwiki Enterprise 7.4。安装扩展的官方方法是使用导入功能或扩展管理器。两种方式都需要用户交互。我想自动化扩展安装过程,所以扩展安装不需要用户交互。可能吗?我已经通过 REST API 自动创建空间/页面。也许可以使用 REST API 来做到这一点,我在文档中找不到它。
为什么我需要它?这很简单:我已经为我的应用程序自动化了部署/迁移过程的所有步骤,我也想自动化 xwiki 扩展安装。
正如 Vincent 所说,您可以从 XWiki 内部使用扩展脚本服务。此脚本服务是 UI 使用的,因此 UI 所做的一切也可以由任何脚本完成(只要脚本作者具有适当的权限)。
我刚刚在http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension+Script+Module#HNon-interactiveandsynchronousinstall上写了一个 Velocity 示例:
{{velocity}}
## Create install request for extension with id org.xwiki.contrib:extension-tweak and version 1.3 on current wiki
#set($installRequest = $services.extension.createInstallRequest('org.xwiki.contrib:extension-tweak', '1.3', "wiki:${xcontext.database}"))
## Disable interactive mode
$installRequest.setInteractive(false)
## Start install
#set($installJob = $services.extension.install($installRequest))
## Wait until install is done
$installJob.join()
{{/velocity}}
XWiki Core 开发团队意识到了这一点,它在路线图中,但还没有完成。例如,您可以看到它是为 8.0 路线图计划的,但它滑倒了 ( http://www.xwiki.org/xwiki/bin/view/Roadmaps/Archives8xCycle/ )。
继续改进升级工具:可编写脚本的升级(优先级 1)、模拟(优先级 2)
目前似乎没有为此创建任何问题。如果您可以在 XWiki 平台项目的http://xwiki.org上创建一个 JIRA 问题,那就太好了。
现在关于扩展,有一些脚本服务可用于操作扩展,请参阅http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension+Script+Module
但是,此文档非常简洁。您可以在https://github.com/xwiki/xwiki-platform/blob/95abd2951123431c1624c124b49ca7a88b41be00/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-script/src/main/java查看java代码/org/xwiki/extension/script/ExtensionManagerScriptService.java#L84-L84
我没有亲自使用过这个脚本服务,所以我不能给出使用这个 API 的真实例子
您只需将 Thomas 的脚本放在一个页面中即可。您可以为此使用 REST API。请参阅: http: //platform.xwiki.org/xwiki/bin/view/Features/XWikiRESTfulAPI#HPageresources
然后从应用程序中调用 URL。
例如:您通过 REST 调用将代码放入XWiki/AutoInstall
,然后您可以使用以下 url 调用此页面:
http://localhost:8080/xwiki/bin/get/XWiki/AutoInstall
我建议使用 URL 中的“get”操作来避免不必要的信息。