Source Repositories
All XWiki sources are stored in Git repositories on GitHub. XWiki is an ObjectWeb's project, but we're using GitHub to store our sources.
You can browse the source repositories and download the sources by using GitHub.
Top Level Projects
XWiki is not a single product, but an ecosystem of top-level projects.
Here's the list of repositories (one repository per top level project) you should see if you browse the Git repositories on https://github.com/xwiki :
Git Repository name | Description |
---|---|
xwiki-commons | Technical libraries common to several other top level projects. Can be used by projects outside of the XWiki ecosystem; not related to the wiki domain. |
xwiki-eclipse | Desktop application targeted to developers for productivity/offline editing of XWiki pages. |
xwiki-enterprise | A professional wiki with enterprise features. |
xwiki-manager | Manages farms of XWiki Enterprise instances. |
xwiki-office | An add-in to edit XWiki pages from MS Word. |
xwiki-platform | Reusable components/parts used by other top level projects, making up a wiki runtime. Uses xwiki-commons and xwiki-rendering. |
xwiki-rendering | Rendering library to convert some input syntax into another output syntax. Can be used by projects outside of the XWiki ecosystem. Uses xwiki-commons. |
xwiki-watch | Collaborative RSS Feed Reader. |
Project Structure
Each top level project decides how it structures 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 Commons and Platform projects since those projects have different release cycles for their various modules (see below for more).
XWiki Commons Structure
Directory name | Description |
---|---|
commons/xwiki-commons-pom | The top level Maven build descriptor (a.k.a POM). It's referenced by all other build modules. |
commons/xwiki-commons-core | Commons libraries (JARs) |
commons/xwiki-commons-tools | Build tools used to build other commons modules. |
Here are some useful subversion URLs:
- Anonymous access to all platform modules: http://svn.xwiki.org/svnroot/xwiki/commons/trunks
- Developer access to all platform modules: https://svn.xwiki.org/svnroot/xwiki/commons/trunks
XWiki Rendering Structure
See the Rendering Project.
XWiki Platform Structure
Directory name | Description |
---|---|
platform/core | XWiki Core. Generates the core XWiki JARs. |
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.