0

我使用 xwiki Enterprise 7.4。安装扩展的官方方法是使用导入功能或扩展管理器。两种方式都需要用户交互。我想自动化扩展安装过程,所以扩展安装不需要用户交互。可能吗?我已经通过 REST API 自动创建空间/页面。也许可以使用 REST API 来做到这一点,我在文档中找不到它。

为什么我需要它?这很简单:我已经为我的应用程序自动化了部署/迁移过程的所有步骤,我也想自动化 xwiki 扩展安装。

4

3 回答 3

2

正如 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}}
于 2016-03-17T08:24:42.333 回答
1

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 的真实例子

于 2016-03-16T12:48:14.617 回答
1

您只需将 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”操作来避免不必要的信息。

于 2016-03-17T13:44:33.453 回答