Extension Module

The Extension Module allows installing, uninstalling, upgrading and downgrading extensions on your XWiki Standard instance.

Extension Manager API

The available services of the Extension Manager API are:

  • ExtensionManager searches the provided extension as a dependency of another extension in all repositories including core and local repositories. The search order is:
    • core extensions
    • local extensions
    • features installed in current namespace or parent
    • remote extension in one of the configured remote repositories

The first found extension is returned.

  • CoreExtensionRepository is a virtual extension repository containing core extensions, i.e. extensions that are part of the sealed distribution and which are not upgradable.
  • LocalExtensionRepository is a repository storing local extension, i.e. the place were remote extension are stored after being downloaded and from where extension are actually installed by their respective handlers.
  • ExtensionRepositoryManager is the interface that creates and adds a new repository.

The available extension point component interfaces are: 

  • ExtensionRepositoryFactory creates a new extension repository. The role hint is the supported type of repository: "xwiki", "maven" etc. 
  • ExtensionHandler handles extension related tasks depending of their type: install, uninstall, upgrade, download. The role hint is the supported type of extensions: "jar", "xar", "skin" etc.
  • ExtensionRepositorySource provides a list of ExtensionRepositoryIds representing the remote repositories where "ExtensionRepositoryManager" will search.

Supported Repositories

For the moment, Extension Manager supports 2 repositories:

The "WEB-INF/xwiki.properties" file provides a dedicated section for configuring the list of remote repositories to use:

# Extension Manager
#-------------------------------------------------------------------------------------

#-# [Since 2.5]
#-# Repositories to use when searching and downloading extensions.
#-#
#-# The format is <id>:<type>:<url> where
#-# * id can be anything as long as there is only one
#-# * type is the type of the repository (maven, xwiki, etc.)
#-# * url is the URL or the root of the repository
#-#
#-# [Since 4.3] It's also possible to associate various properties to each repository.
#-# Here are the standard properties:
#-# * user: the user to use to authenticate to the repository
#-# * password: the password to use to authenticate to the repository
#-#
#-# Here is an example:
# extension.repositories=privatemavenid:maven:http://host.com/private/maven/
# extension.repositories.privatemavenid.auth.user=someuser
# extension.repositories.privatemavenid.auth.password=thepassword
#-#
#-# Here's an example to add your local Maven Repository
# extension.repositories=local:maven:file://${sys:user.home}/.m2/repository
#-#
#-# And an example to add the XWiki Maven Snapshot Repository
# extension.repositories=maven-xwiki-snapshot:maven:http://nexus.xwiki.org/nexus/content/groups/public-snapshots
#-#
#-# The default is:
# 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/

  

Related Pages

Search this space