XWiki 中是否有 API 自动安装扩展?
Is there any API to automate extension installation in XWiki?
我使用 xwiki Enterprise 7.4。安装扩展的官方方法是使用导入功能或扩展管理器。这两种方式都需要用户交互。我想自动执行扩展安装过程,因此没有用户交互来安装扩展。可能吗?我已经通过 REST API 自动创建 spaces/pages。也许可以使用 REST API 来完成,我在文档中找不到它。
为什么我需要它?很简单:我已经为我的应用程序自动化了 deployment/migration 过程的所有步骤,我也想自动化 xwiki 扩展安装。
XWiki Core 开发团队已经意识到这一点,并且在路线图中,但尚未完成。例如,您可以看到它是为 8.0 路线图计划的,但它推迟了 (http://www.xwiki.org/xwiki/bin/view/Roadmaps/Archives8xCycle/)。
Continue improving upgrade tools: Scriptable upgrades (priority 1), Simulation (priority 2)
目前似乎没有为此创建问题。如果您可以在 XWiki 平台项目中的 http://xwiki.org 创建一个 JIRA 问题,那就太好了。
现在关于扩展,有一些脚本服务可用于操作扩展,请参阅 http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension+Script+Module
查看 java 代码
我没有亲自使用过这个脚本服务,所以我不能给出使用这个的真实例子 API
正如 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}}
您只需要将 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" 操作以避免不必要的信息。
我使用 xwiki Enterprise 7.4。安装扩展的官方方法是使用导入功能或扩展管理器。这两种方式都需要用户交互。我想自动执行扩展安装过程,因此没有用户交互来安装扩展。可能吗?我已经通过 REST API 自动创建 spaces/pages。也许可以使用 REST API 来完成,我在文档中找不到它。
为什么我需要它?很简单:我已经为我的应用程序自动化了 deployment/migration 过程的所有步骤,我也想自动化 xwiki 扩展安装。
XWiki Core 开发团队已经意识到这一点,并且在路线图中,但尚未完成。例如,您可以看到它是为 8.0 路线图计划的,但它推迟了 (http://www.xwiki.org/xwiki/bin/view/Roadmaps/Archives8xCycle/)。
Continue improving upgrade tools: Scriptable upgrades (priority 1), Simulation (priority 2)
目前似乎没有为此创建问题。如果您可以在 XWiki 平台项目中的 http://xwiki.org 创建一个 JIRA 问题,那就太好了。
现在关于扩展,有一些脚本服务可用于操作扩展,请参阅 http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension+Script+Module
查看 java 代码我没有亲自使用过这个脚本服务,所以我不能给出使用这个的真实例子 API
正如 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}}
您只需要将 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" 操作以避免不必要的信息。