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 name | Description |
|---|---|
| contrib | Location 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. |
| curriki | A collaborative platform to help create and share educational resources. |
| enterprise | A professional wiki with enterprise features. |
| manager | Manages farms of XWiki Enterprise instances. |
| platform | All the reusable components/parts used by other top level projects to build upon. |
| watch | Collaborative RSS Feed Reader. |
| xeclipse | Desktop application targeted to developers for productivity/offline editing of XWiki pages. |
| xoffice | An 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:
- To check the trunk for XWiki Enterprise you'd use the URL: http://svn.xwiki.org/svnroot/xwiki/enterprise/trunk/
- To check out the 2.0 version of XWiki Enterprise you'd use the URL: http://svn.xwiki.org/svnroot/xwiki/enterprise/tags/xwiki-enterprise-2.0/ (you can browse all available versions at http://svn.xwiki.org/svnroot/xwiki/enterprise/tags/ )
- To check out some XWiki Enterprise branch you'd use the URL: http://svn.xwiki.org/svnroot/xwiki/enterprise/branches/<name of branch> (you can browse all available branches at http://svn.xwiki.org/svnroot/xwiki/enterprise/branches/ )
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 name | Description |
|---|---|
| platform/core | XWiki Core. Generates the core XWiki JARs. |
| platform/pom | The top level Maven2 build descriptor (a.k.a POM). It's referenced by all other build modules. |
| platform/skins | XWiki skins. |
| platform/web | Templates and more generally all reusable web files. Generates the platform WAR. |
| platform/xwiki-applications | Set of reusable XWiki documents exported as XML (XARs). They are usually included in the Products Wikis. |
| platform/xwiki-plugins | XWiki plugins that are currently not included in the core. In the future all plugins will be moved here. |
| platform/xwiki-tools | Build tools and various other misc. tools. |
Here are some useful subversion URLs:
- Anonymous access to all platform modules: http://svn.xwiki.org/svnroot/xwiki/platform/trunks
- Developer access to all platform modules: https://svn.xwiki.org/svnroot/xwiki/platform/trunks
It's also possible to check out individual modules. For example:
- Anonymous access to the Platform Core only: http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk
- Anonymous access to the Platform Plugins only: http://svn.xwiki.org/svnroot/xwiki/platform/xwiki-plugins/trunk
- Anonymous access to the Platform Applications only: http://svn.xwiki.org/svnroot/xwiki/platform/xwiki-applications/trunk
XWiki Enterprise Structure
| Directory name | Description |
|---|---|
| enterprise/wiki | Default XWiki Enterprise XAR. |
| enterprise/database | Loads the XWiki Enterprise XAR into target databases. |
| enterprise/distribution | Generates distributions for given Servlet container and given Databases. |
| enterprise/distribution-tests | Functional tests. |
| enteprise/installers | Generates generic and Windows installers based on generated distributions. |
| enterprise/web | Generates the XWiki Enterprise WAR. |
Checking out sources
- Use your favorite Subversion client (svn command line client, TortoiseSVN on Windows, your IDE, etc)
- If you're a user check out http://svn.xwiki.org/svnroot/xwiki/... where ... represents the directory you wish to check out
- If you're a Committer check out https://svn.xwiki.org/svnroot/xwiki/... where ... represents the directory you wish to check out
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:
- http://svn.xwiki.org/svnroot/xwiki/platform/core/tags/xwiki-core-2.0/
- http://svn.xwiki.org/svnroot/xwiki/platform/web/tags/xwiki-web-2.0/
- http://svn.xwiki.org/svnroot/xwiki/enterprise/tags/xwiki-enterprise-2.0/
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:
For example with XE, checkout XE tag version you are interested on and type the command line in XE root folder.