Extensions Wiki » Extensions Wiki » Extension Module

Extension Module

Last modified by Thomas Mortagne on 2012/04/03
connectManages Extensions (install, uninstall, upgrade)
TypeJAR
Developed by

XWiki Development Team

LicenseGNU Lesser General Public License 2.1
Bundled With

XWiki Enterprise, XWiki Enterprise Manager

Compatibility

XWiki Enterprise > 2.5

Description

Allows installing, updating and uninstalling extensions in a running XWiki instance.

Features

Architecture

Core principles:

  • The extension manager supports any kind of repository (maven, extensions.xwiki.org, etc.).
  • The Extension manager supports any kind of extension (jar, xar, skin, etc.).
  • Each extension can have dependencies located in any repository.
  • An extension can be installed/upgraded/uninstalled on any wiki or in the whole farm.

flow.png

xar.png

jar.png

Screenshots

See the Extension Manager Application.

Configuring Extension Repositories

You can control the list of Repositories to use by setting the extension.repositories property in your xwiki.properties file. Here's the documentation you'll find when editing xwiki.properties:

#-# [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
#-# 
#-# 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/

Thus for example if you wish to add your local Maven repository (/Users/vmassol/.m2/repository in this case) so that you can test an extension you'd have built locally with Maven you'd write:

extension.repositories=local:maven:file:///Users/vmassol/.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/

If you wish to add the XWiki Snapshot repo you'd add:

...
extension.repositories=maven-xwiki-snapshot:maven:http://nexus.xwiki.org/nexus/content/groups/public-snapshots/
...

Future

See Extension Manager design page.

Changelog

  1. (since 2.5): make possible to install/uninstall/upgrade a fully working ruby macro and dependencies with basic UI
    • download extension from remote repositories to a local repository
    • resolve extension dependencies in a list of repositories
    • install jar extension
      • load jar in a classloader
      • load extension components
      • make sure the extension classloader is the execution classloader (so that scripting classloader use it as parent classloader)
    • uninstall jar extension
      • unload extension components
      • unload jar from classload need a restart
    • load jar extensions from local repository at startup
      • make sure only valid extensions are loaded (i.e. if a dependency is missing the extension is not loaded)
    • list installed extensions
    • compare extension versions
  2. (since 3.0):
    • add minimalistic xar support (XWIKI-5557)
      • install/uninstall/upgradde a xar extension
      • the xar can have infinite number of pages and attachments, it's just limited by the size of each attachment right now until the storage API support fully streamed attachments
      • very limited upgrade: import add a new version to make sure to not loose anything, there is no real document merging handling
      • delete pages from old version not in the new version when upgrading a xar extension (XWIKI-6102)
    • add multiwiki support (install any extension on a specific wiki only) (XWIKI-5705)
    • add extension events (XWIKI-6101)
  3. (since 3.1):
  4. (since 3.2):
    • full automated 3 ways merging of xar pages (XWIKI-6650)
    • virtual extensions (XWIKI-6742)
    • improved reporting (XWIKI-6781)
    • moved local repository to container persistent directory (XWIKI-6958)
    • complete rewrite of the XWiki Repository REST protocol (XWIKI-6871)
    • display all descriptor informations when resolving an extension (XWIKI-6967)
  5. (since 3.3):
    • add Extensions author URL information (XWIKI-7165)
    • improved core extension scanning (XWIKI-7162)
    • refactored the extension download API to get a InputStream and size information instead of providing a File object which is way more generic (XWIKI-7159)
    • several breaking changes in the Extension Repository REST protocol (XWIKI-7123, XWIKI-7114, XWIKI-7084)
    • lot's of improvements in the Extension Repository UI, http://extensions.xwiki.org is now based on it (XWIKI-7114)
    • allow ExtensionRepository implementations to control dependency resolution (XWIKI-7170)
    • add support for classifier in Maven/Aether repository handler (XWIKI-7161)
    • add support for version range in Maven/Aether repository handler (XWIKI-7171)
    • add support for full jar unload when uninstalling (XWIKI-7201)
  6. (since 3.4)
    • framework
  7. (since 3.5)
    • repository
      • extension import UI
    • framework
      • clustering support
  8. (since 4.0)
    • starting stabilization of the API
    • extension manager
      • new installed extension repository extracted from local extension repository
      • added multiwiki related UI
      • the result of the execution of a job is now stored
      • extension manager moved to commons
      • job related code is now located in its own commons module
    • repository
      • improved imported extension display
      • it's now possible to extend the extension sheet without modifying it
Tags: development
Created by Thomas Mortagne on 2010/10/05

Download XWiki

My Recent Modifications