Source Repository

All XWiki sources are stored in a Subversion repository. XWiki is an ObjectWeb's project, but we're using our own SVN server.

You can browse the source repository and even get source ZIPs or tarball by using XWiki's Fisheye installation or by using SVNSearch.

Top Level Projects

XWiki is not a single product, but an ecosystem of top-level projects. One special top-level project is called the Platform and contains code upon which other projects (like XWiki Enterprise, XWiki Watch, etc.) build upon.

In order to better understand the relationships between the Platform and other top level projects, check how XWiki is Architected.

Here's the list of directories that you should see if you browse the repository on http://svn.xwiki.org/svnroot/xwiki/ :

Directory nameDescription
contribLocation for contributions. Anyone can request to get access to this location to contribute code. You don't need to be a committer to do so.
currikiA collaborative platform to help create and share educational resources.
enterpriseA professional wiki with enterprise features.
managerManages farms of XWiki Enterprise instances.
platformAll the reusable components/parts used by other top level projects to build upon.
watchCollaborative RSS Feed Reader.
xeclipseDesktop application targeted to developers for productivity/offline editing of XWiki pages.
xofficeAn add-in to edit XWiki pages from MS Word.

Project Structure

Each top level projects decides how it structure its trunk, branches and tags. However the general rule is to have trunk/, branches/ and tags/ directory just below the top level project directory. 

For example:

Note that the trunks/tags/branches structure is different for the Platform project since that projects has different release cycles for its various modules (see below for more).

XWiki Platform Structure

Directory nameDescription
platform/coreXWiki Core. Generates the core XWiki JARs.
platform/pomThe top level Maven2 build descriptor (a.k.a POM). It's referenced by all other build modules.
platform/skinsXWiki skins.
platform/webTemplates and more generally all reusable web files. Generates the platform WAR.
platform/xwiki-applicationsSet of reusable XWiki documents exported as XML (XARs). They are usually included in the Products Wikis.
platform/xwiki-pluginsXWiki plugins that are currently not included in the core. In the future all plugins will be moved here.
platform/xwiki-toolsBuild tools and various other misc. tools.

Here are some useful subversion URLs:

Anonymous users can also use the HTTPS protocol for checking out sources, but they won't be able to commit changes in the repository.

The trunks directory mentioned above is using svn externals. This means that checking it out will check out other directories too. For information here are the svn:externals definitions used:

pom https://svn.xwiki.org/svnroot/xwiki/platform/pom/trunk
core https://svn.xwiki.org/svnroot/xwiki/platform/core/trunk
web https://svn.xwiki.org/svnroot/xwiki/platform/web/trunk
skins https://svn.xwiki.org/svnroot/xwiki/platform/skins/trunk
applications https://svn.xwiki.org/svnroot/xwiki/platform/xwiki-applications/trunk
plugins https://svn.xwiki.org/svnroot/xwiki/platform/xwiki-plugins/trunk
tools https://svn.xwiki.org/svnroot/xwiki/platform/xwiki-tools/trunk

It's also possible to check out individual modules. For example:

XWiki Enterprise Structure

Directory nameDescription
enterprise/wikiDefault XWiki Enterprise XAR.
enterprise/databaseLoads the XWiki Enterprise XAR into target databases.
enterprise/distributionGenerates distributions for given Servlet container and given Databases.
enterprise/distribution-testsFunctional tests.
enteprise/installersGenerates generic and Windows installers based on generated distributions.
enterprise/webGenerates the XWiki Enterprise WAR.

Checking out sources

Caution: http://svn.xwiki.org/svnroot/xwiki/platform contains every file in every release, and is about 7 Gigabytes in size (and growing). Unless you are making a historical archive of the XWiki development process, it is recommended that you checkout just the trunks at http://svn.xwiki.org/svnroot/xwiki/platform/trunks 

Then build the checked out sources.

Tips & Tricks

Building a specific version of XWiki Enterprise

Note: You don't need to check out all sources to build a given module. You just need to check out that module since the dependencies used by that module will be fetched automatically by Maven (See Building). However if that module is used by another module you'll need to check out the source for that modules and rebuild it to use your modified sources. 

For example imagine you're making a change in platform/core/xwiki-core and you want to have them in XWiki Enterprise, you'll need to build platform/core/xwiki-core, then check out and build platform/web and enterprise/. To make this simpler and not have to manually find out which specific dependencies to check out and build you could decide to rebuild the full platform/core and platform/web.

Let's take an example and try to build XWiki Enterprise 2.0. You'd check out and build:

Note that this won't rebuild plugins or applications used by XWiki Enterprise. If you wanted to bring changes to those you'd need to find out which version of them is used by XWiki Enterprise (by looking in enterprise/pom.xml), check them out and build them after you've built platform/core and before you build platform/web.

Find project dependencies versions

To easily find project versions recursively you can use the following command:

mvn dependency:tree

For example with XE, checkout XE tag version you are interested on and type the command line in XE root folder.

svn co http://svn.xwiki.org/svnroot/xwiki/enterprise/tags/xwiki-enterprise-2.0/ && cd xwiki-enterprise-2.0 && mvn dependency:tree
Tags:
Created by Vincent Massol on 2006/12/11 17:49
Last modified by Sorin Burjan on 2010/05/13 00:32

This wiki is licensed under a Creative Commons license
2.3.28624