Last modified by Vincent Massol on 2024/04/08 16:22

From version 59.1
edited by Vincent Massol
on 2012/03/31 14:13
Change comment: There is no comment for this version
To version 60.1
edited by Vincent Massol
on 2012/04/03 10:25
Change comment: Update

Summary

Details

Page properties
Content
... ... @@ -1,10 +1,6 @@
1 1  {{box cssClass="floatinginfobox" title="**Contents**"}}{{toc/}}{{/box}}
2 2  
3 3  {{error}}
4 -31 March 2012: This page contains lots of obsolete information and needs to be updated.
5 -{{/error}}
6 -
7 -{{error}}
8 8  Make sure you install Maven 3.0 or greater. It might build fine using earlier versions but we're not supporting them and all the XWiki committers and our CI server are running 3.0 and greater.
9 9  {{/error}}
10 10  
... ... @@ -12,23 +12,21 @@
12 12  
13 13  Before you start it's good to have some minimal understanding of [[how Maven works>>http://maven.apache.org/users/index.html]]. You probably won't need it if everything goes fine but you'll need that knowledge if something breaks! ;-)
14 14  
15 -The first thing to understand is the [[directory structure used>>SourceRepository]].
11 +The first thing to understand is the [[directory structure we use>>SourceRepository]].
16 16  
17 17  = Checking out the sources =
18 18  
19 -Use your favorite SCM client to [[check out the sources>>SourceRepository]].
15 +Use your favorite SCM client to [[check out the Project>>SourceRepository]] you wish to build.
20 20  
21 -You can check out the whole source tree or only a single module you wish to build. Maven is powerful enough in that it'll always try to download the required dependencies from the remote repositories you have defined, so that you don't have to build the whole project from sources.
22 -
23 23  = Installing Maven =
24 24  
25 -* Install [[Maven 3.0 or greater>>http://maven.apache.org]]. Create an M2_HOME environment variable pointing to where you have installed Maven. Add //M2_HOME/bin// to your PATH environment variable.(((
19 +* Install [[Maven 3.0 or greater>>http://maven.apache.org]]. Create an ##M2_HOME## environment variable pointing to where you have installed Maven. Add ##M2_HOME/bin## to your PATH environment variable.(((
26 26  {{info}}For more information on how to install Maven or how to use it check this [[excellent Maven book>>http://www.sonatype.com/book/reference/public-book.html]].{{/info}}
27 27  )))
28 -* Make sure you give Maven's JVM enough memory. XWiki's build uses Aspects and GWT compilers which need lots of memory. A good value is to give the JVM 600MB. To do that set an environment variable named ##MAVEN_OPTS##. For example on Unix add the following to your shell startup script:(((
29 -{{code language="none"}}MAVEN_OPTS="-Xmx500m -XX:MaxPermSize=256m"{{/code}}
30 -))) (depending on your shell you might need to prefix the variable with ##export##)
31 -* Create a ##~~/.m2/settings.xml## file with the XWiki custom remote repository defined as shown below. If you are on Windows, create the directory ##.m2## in your home directory, e.g. ##C:\Documents and Settings\Administrator\.m2##. If you cannot do this from Windows Explorer, open a commandline and use ##md .m2##.(((
22 +* Make sure you give Maven's JVM enough memory. XWiki's build uses Aspects and GWT compilers which need lots of memory. A good value is to give the JVM 512MB. To do that set an environment variable named ##MAVEN_OPTS##. For example on Unix add the following to your shell startup script (depending on your shell you might need to prefix the variable with ##export##):(((
23 +{{code language="none"}}MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"{{/code}}
24 +)))
25 +* Create a ##~~/.m2/settings.xml## file with the XWiki custom remote repository defined as shown below. If you are on Windows, create the directory ##.m2## in your home directory, e.g. ##C:\Documents and Settings\Administrator\.m2##. If you cannot do this from Windows Explorer, open a command line and use ##md .m2##.(((
32 32  
33 33  {{code language="xml"}}
34 34  <settings>
... ... @@ -91,152 +91,94 @@
91 91  </settings>
92 92  {{/code}}
93 93  
94 -{{info}}Depending on your geographical location, you should use closer maven repositories to speed up your build process. For more information refer [[Maven Mirror Settings Guide>>http://maven.apache.org/guides/mini/guide-mirror-settings.html]].{{/info}}
88 +{{info}}Depending on your geographical location, you should use closer Maven repositories to speed up your build process. For more information refer [[Maven Mirror Settings Guide>>http://maven.apache.org/guides/mini/guide-mirror-settings.html]].{{/info}}
95 95  )))
96 96  
97 97  = Building with Maven =
98 98  
99 -Projects are directories found under the XWiki SCM root. For example: platform, enterprise, manager, etc.
93 +Now that you have installed Maven and checked out the [[Projects>>SourceRepository#HTopLevelProjects]] you wanted you'll want to build them. To build a project with Maven just issue the command ##mvn install##.
100 100  
101 -To build them, check them out and run ##mvn install##.
95 +Each project is made of modules. Thanks to XWiki's [[Continuous Integration setup>>DevelopmentPractices#HContinuousIntegration]] you can check out and build any single module (and its children) you wish without having to rebuild the other modules from source. Maven will pick the latest version of your module's dependencies from [[XWiki's Maven remote repositories>>http://maven.xwiki.org]]. Of course if you have uncommitted changes in a dependent module, you'll want to build that module before. The build result is placed in two places:
96 +* Your [[local maven repository>>http://maven.apache.org/guides/introduction/introduction-to-repositories.html]], for making the module available to other projects or modules using maven (even other XWiki modules take the needed libraries from this repository, and not directly from a "neighbor" directory)
97 +* In a subdirectory of that module, called ##target##.
102 102  
103 -Each project is made of modules. Thanks to XWiki's [[Continuous Integration setup>>Community.DevelopmentPractices#HContinuousIntegration]] you can check out and build any single module (and its children) you wish without having to rebuild the other modules from source. Maven will pick the latest version of your module's dependencies from [[XWiki's Maven remote repositories>>http://maven.xwiki.org]]. Of course if you have uncommitted changes in a dependent module, you'll want to build that module before. The build result is placed in two places:
104 -* the [[local maven repository>>http://maven.apache.org/guides/introduction/introduction-to-repositories.html]], for making the module available to other projects or modules using maven (even other XWiki modules take the needed libraries from this repository, and not directly from a "neighbor" directory)
105 -* and in a subdirectory of that module, called ##target##.
99 +{{info}}
100 +Now some of the modules built by XWiki are very large (in the 40MB+ size) and sometimes you don't absolutely need the latest version to get downloaded as it'll take too long. In that case here's a tip: run Maven in 'no-snapshot-update' mode with ##mvn install -nsu##.
101 +{{/info}}
106 106  
107 -{{info}}Now some of the modules built by XWiki are very large (in the 40MB+ size) and sometimes you don't absolutely need the latest version to get downloaded as it'll take too long. In that case here's a tip: run Maven in 'no-snapshot-update' mode with ##mvn install -nsu##.{{/info}}
103 +{{warning}}
104 +You might encounter an ##java.lang.OutOfMemoryError## during ##aspectj:compile##. You must increase the maximum memory used by maven, by setting ##MAVEN_OPTS=-Xmx512m## (or a larger amount of memory if needed).
105 +{{/warning}}
108 108  
109 -{{warning}}You might encounter an ##java.lang.OutOfMemoryError## during ##aspectj:compile##. You must increase the maximum memory used by maven, by setting ##MAVEN_OPTS=-Xmx512m## (or a different amount of memory).{{/warning}}
110 -
111 111  You'll find below some common build tasks.
112 112  
113 -== Building for a specific database ==
109 +== Using Profiles ==
114 114  
115 -By default XWiki's Maven build will use Hypersonic SQL as the default database. If you wish to execute the build using a different database, you'll need to specify the correct database profile (##-P<profile name>##). Right now we support 4 profiles:
116 -* ##hsqldb##: Hypersonic SQL. This is the default
117 -* ##mysql##: MySQL
118 -* ##pgsql##: PostGreSQL
119 -* ##derby##: Apache Derby
111 +Project builds define several [[Maven Profiles>>http://maven.apache.org/guides/introduction/introduction-to-profiles.html]]. We've standardized their names across Projects.
120 120  
121 -For example to build a module for MySQL type ##mvn install -Pmysql## in that module's directory.
122 -
123 -{{warning}}Hypersonic and Derby are embedded database so you won't need anything setup to execute the build for them. However for MySQL and PostGreSQL you'll need to have the database installed, set up and running before you can run the build with their profiles.
124 -
125 -A simple way to do this is to define the necessary properties within ##{HOME}/.m2/settings.xml## as explained above when configuring the maven mirrors. Check the property names required by looking at the corresponding profiles section in the [[platform's top level pom.xml file>>https://github.com/xwiki/xwiki-platform/blob/master/pom.xml]]
113 +Here are the most common ones:
114 +* ##legacy##: Includes the [[legacy modules>>DevelopmentPractices#HDeprecation26LegacyStrategy]] in the build.
115 +* ##integration-tests##: Executes integration and functional tests in the build.
116 +* ##jetty##, ##glassfish##: Run the build for the specified container (##jetty## is the default when not specified).
117 +* ##hsqldb## (Hypersonic SQL), ##mysql## (MySQL), ##pgsql## (PostgreSQL), ##derby## (Derby): Run the build for the specified database (##hsqldb## is the default when not specified).(((
118 +{{warning}}
119 +Hypersonic and Derby are embedded database so you won't need anything setup to execute the build for them. However for MySQL and PostgreSQL you'll need to have the database installed, set up and running before you can run the build with their profiles.
126 126  {{/warning}}
121 +)))
122 +* ##firefox## (Firefox), ##iexplore## (Internet Explorer), ##chrome## (Google Chrome), ##otherbrowser## (need to define ##browserPath## property to use that one): Run the functional tests on the specified browser (##firefox## is the default when not specified).
123 +* ##dev##: only build wysiwyg for English/Firefox. Very useful to speed up the build of XWiki Platform
127 127  
128 -== Building on Windows ==
125 +More "exotic" ones:
126 +* ##clover##: A profile to use when [[generating Test Coverage reports>>Testing#HTestCoverage]] with [[Clover>>http://www.atlassian.com/software/clover/overview]]. This profile skips execution of Checkstyle, CLIRR and Enforcer plugin checks to speed up the coverage generation and because of potential conflicts between tools.
127 +* ##release##: Used by the Maven Release plugin when releasing XWiki. It generates Javadoc and Source artifacts. It also checks that the Java version used is JDK6, that the Javadoc exists and it signs artifacts using GPG (this is a good practice and a [[requirement for being able to upload some of our artifacts to the Maven Central Repository>>http://maven.apache.org/guides/mini/guide-central-repository-upload.html]]).
128 +* ##m2e##: For [[m2eclipse>>http://www.eclipse.org/m2e/]] users. It sets the Eclipse output directory to ##target-eclipse## (instead of ##target##) to prevent race conditions between Maven within Eclipse and Maven on the command line.
129 +* ##unix##, ##mac##, ##windows##: These profiles are automatically activated depending on the OS the build is running on. These profiles are useful for the Installers and for functional tests to decide how to start XWiki.
130 +* ##macprofiler##, ##winprofiler##: Start [[XWiki for Profiling>>Profiling]] (they require that you set a ##profilePath## property in your ##settings.xml## or on the command line)
131 +* ##gwt-test-manual##: allow running GWT unit tests manually
132 +* ##debug##: [[weave debug aspects for profiling>>Profiling]] and remove JS minification.
129 129  
130 -To build on Windows, you should specify the ##windows## profile (##-Pwindows##).
134 +For example, if you use to include legacy modules and run all integration and functional tests and use Jetty/HSQLDB, you would use:
131 131  
132 -== Building XWiki Enterprise ==
136 +{{code}}
137 +mvn clean install -Plegacy,integration-tests,hsqldb,jetty
138 +{{/code}}
133 133  
134 -Go in ##enterprise/## and type ##mvn install##. It'll build it with a default config for HSQL DB. After the build is finished you'll find the standalone zip in ##enterprise/distribution/jetty/hsqldb/target/##.
140 +== Relationship between XWiki Enterprise and XWiki Platform ==
135 135  
136 -{{info}}If you wish to build all the modules required for XWiki Enterprise and not the ones required by other products you can go at the top level and type ##mvn install##"{{/info}}
137 -
138 -{{info}}The functional tests are not executed by default as the take a long time to execute and are meant mostly to be executed by the Continuous Integration tool. However if you wish to run them you can execute ##mvn install -Pxe,ci##{{/info}}
139 -
140 -{{info}}The installer builds are not executed by default (they are executed on the Continuous Integration server though). If you wish to run them you can execute ##mvn install -Pxe,ci## or better, go in ##xwiki-product-enterprise/installers## and run ##mvn install##.{{/info}}
141 -
142 -== The Relationship between XWiki Enterprise and XWiki Platform ==
143 -
144 144  XWiki Platform is a generic platform and API for building flexible extensible wikis and web applications. XWiki Enterprise is an implementation of the platform geared toward making a wiki site for teams to share information and synchronize their efforts although it can be and has been used for a wide variety of different use cases like this website.
145 145  
146 146  What does this mean to the developer?
147 -If you wish to make changes in the core of XWiki, you are probably going to want to work on XWiki Platform. You can download and compile XWiki Enterprise and while compiling, you will notice Maven downloads a big ~~80MB file, this is the platform. Maven is smart enough to know that you don't have a copy of the platform and will download it from the XWiki Maven repository. Once it has been downloaded the first time, it is stored on your harddrive and you won't have to download it again //until// changes are made in the platform.
145 +If you wish to make changes in the core of XWiki, you are probably going to want to work on XWiki Platform. You can download and compile XWiki Enterprise and while compiling, you will notice Maven downloads a big 80MB+ file, this is the platform. Maven is smart enough to know that you don't have a copy of the platform and will download it from the XWiki Maven repository. Once it has been downloaded the first time, it is stored on your harddrive and you won't have to download it again //until// changes are made in the platform.
148 148  
149 -If you want to work on the core or if you have limited bandwidth, then you are well advised to download the platform. Then you can use the SCM's update command to get the latest copy without downloading the entire platform all over again. If you download the platform and compile it then you can compile XWiki Enterprise, Maven will use your newly compiled copy of the platform rather than downloading it, Maven is smart.
147 +If you want to work on the core or if you have limited bandwidth, then you are well advised to get the platform sources. Then you can use the SCM's update command to get the latest copy without downloading the entire platform all over again. If you download the platform and compile it then you can compile XWiki Enterprise, Maven will use your newly compiled copy of the platform rather than downloading it, Maven is smart.
150 150  
151 -== Building XWiki Platform ==
149 += Automatic Checks =
152 152  
153 -The platform is built much the same way as XWiki Enterprise but it is a large project and compiling can take a long time (over 1/2 hour.)
154 -One of the reasons building the platform is slow is because the [[WYSIWYG module>>#HBuildingtheWYSIWYGeditor]] builds a version for each supported browser in each language. You can make it only build for English/Firefox by specifying ##**-Pdev**## in the build command.
155 -**##mvn install -Pdev**##
156 -You can also build the platform faster if you skip the unit tests by building with the command:
157 -**##mvn install -Dtest=none -DfailIfNoTests=false##**
158 -{{warning}}**Caution:** If you have just made a patch, you should probably run the tests since breaking a test is embarrassing.{{/warning}}
159 -For added safety (especially when you have made changes which might affect the ability of other code to find the libraries it needs) you can compile with:
160 -**##mvn clean install##**
161 -and everything will be recompiled.
162 -Press enter, go get a cup of coffee, and wait.
151 +The XWiki build performs some automated checks:
152 +* Style checks with Checkstyle. To skip: ##-Dxwiki.checkstyle.skip=true##.
153 +* Verify header licenses
154 +* Backward compatibility checks with [[CLIRR>>http://clirr.sourceforge.net/]]. To skip: ##-Dxwiki.clirr.skip=true##.
155 +* Enforcer checks (To skip: ##-Dxwiki.enforcer.skip=true##):
156 +** Verify that all plugins are versions specified
157 +** Verify the correct Junit artifact is used (##junit-dep## and not ##junit##)
158 +** Verify we don't use Commons Logging or Log4j (since we use SLF4J)
159 +** Verify that the Java version is 6 (in the release profile)
160 +** Verify that Javadoc exist (in the release profile, this is a Maven Central requirement)
161 +** In Commons: Verify that Commons modules don't have a dependency on Rendering and Platform modules
162 +** In Rendering: Verify that Rendering modules don't have a dependency on Platform modules
163 163  
164 -== Executing the Automated Functional Tests for XWiki Enterprise ==
164 += Tips ==
165 165  
166 -Go in ##enterprise/distribution-test## and type ##mvn install##. By default they are executed in Firefox. To run them in a different browser, use a profile. For example to run them in IE, type ##mvn install -Piexplore##.
166 +== Skipping Tests ==
167 167  
168 -See the [[Testing]] page for more details.
168 +While you should almost never do that, here's a tip for the rare occasions when you'll need to build something fast:
169 169  
170 -== Executing the Standard Web WAR quickly in development mode ==
170 +{{code}}
171 +mvn install -Dtest=none -DfailIfNoTests=false
172 +{{/code}}
171 171  
172 -{{warning}}
173 -Update 2010-03-07: The part below is a bit oldish and is probably not working any more. It needs someone to look at it. Please check the alternative below.
174 +Alternatives are ##mvn install -DskipTests=true## or ##mvn install -Dmaven.test.skip=true##. Refere to the Maven documentation to understand the differences.
174 174  
175 -Go in ##platform/web/standard## and type ##mvn install -Pjettyrun##. This will execute it on Jetty with a HSQLDB database located in ##platform/web/standard/database## (we need to improve the build to locate it elsewhere). So if you want to have any content displayed you'll need to put a HSQLDB there or simply import a XAR.
176 -
177 -{{info}}If you wish to use another database like MySQL, run ##mvn install -Pjettyrun,mysql##. See the section above on building XWiki for a specific database for more information.{{/info}}
178 -
179 -Once the build has started Jetty, open your browser and point it to ##[[http://localhost:8080/xwiki]]##.
180 -
181 -To debug in this mode, run ##MAVEN_OPTS='-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n' mvn install -Pjettyrun## and attach you IDE to this process as in [[Debugging#HRemoteDebugging]].
182 -
183 -Note that this is a quick way of starting XWiki in development mode. However the real test is to start the XWiki Enterprise standalone distribution to ensure that everything works. This is achieved by running ##mvn install## in ##enterprise/##.
184 -{{/warning}}
185 -
186 -{{info}}Here are some alternative strategies used by XWiki committers:
187 -
188 -* [[Debug with Eclipse and m2eclipse>>dev:Community.DebugXEWithEclipse]]
189 -* Keep a running XE and copy modified files to it. You can even start your container in development mode so that it reloads the copied files automatically.
190 -* Download the latest XE SNAPSHOT from [[XWiki's Continuous Integration server>>http://maven.xwiki.org/snapshots/]] and unzip it and then start it.{{/info}}
191 -
192 -== Building XEclipse ==
193 -
194 -{{warning}}You'll need Eclipse 3.3.x (or above) and an associated PDE (Plugin Development Environment) in order to build XEclipse from source.{{/warning}}
195 -
196 -This section is about building XEclipse with maven. For instructions on how to build XEclipse from right within the Eclipse IDE, you may refer to [[Building in Eclipse>>dev:Community.BuildingInEclipse]]
197 -
198 -=== Building XEclipse as an Eclipse plugin ===
199 -
200 -Change directory to ##plugins/org.xwiki.eclipse## and run ##mvn install -DeclipseInstall=$ECLIPSE_DIR##
201 -
202 -=== Builing XEclipse as a standalone application ===
203 -
204 -You will need the [[pde-maven-plugin>>http://mojo.codehaus.org/pde-maven-plugin/]].
205 -Once this maven plugin is installed, please refer to ##plugins/org.xwiki.eclipse.rcp/README## for further information about building instructions.
206 -
207 -== Building the WYSIWYG editor ==
208 -
209 -=== Version 2.2.x and older ===
210 -
211 -The WYSIWYG editor's code is split in three modules, all found in ##platform/web## directory:
212 -
213 -* ##xwiki-gwt-dom## (DOM API, Selection and Range API)
214 -* ##xwiki-gwt-user## (Widgets including the RichTextArea)
215 -* ##wysiwyg## (The editor code, including plugins)
216 -
217 -The ##wysiwyg## module depends on the ##xwiki-gwt-dom## and ##xwiki-gwt-user## modules. The ##xwiki-gwt-user## module depends on ##xwiki-gwt-dom## module. After you build a module you have to also build the modules that depend on it for your changes to take effect. To build one of the modules you just have to execute ##mvn clean install## in the corresponding directory. ##xwiki-gwt-dom## and ##xwiki-gwt-user## modules generate jars (so no JavaScript). This jars are required at GWT compile time. The ##wysiwyg## module generates a war that is merged with the war build from ##platform/web/standard##. The WYSIWYG war contains mainly the GWT-compiled JavaScript code and the server side jar.
218 -
219 -By default, when you build the ##wysiwyg## module the GWT compiler generates compilation units (permutations) for each major browser and for each supported locales. Because of this the build takes a while and requires a lot of resources (both memory and processor). We cannot afford this during developemnt so we build the editor just for one browser and one locale at a time. We achive this by using the ##-Pdev## maven profile and by specifying the browser and the locale in the ##src/main/resources/com/xpn/xwiki/wysiwyg/WysiwygDev.gwt.xml## module descriptor that is used for developent. This module descriptor inherits ##Wysiwyg.gwt.xml## which is used by default if the ##-Pdev## profile is not activated. If you build the ##wysiwyg## module using the ##-Pdev## profile and you don't change the ##WysiwygDev.gwt.xml## the GWT compiler generates only one permutation for Firefox + English locale.
220 -
221 -The JavaScript code is obfuscated by default. Using the ##-Pdev## profile the JavaScript code is kept detailed (for debugging) but its size (5MB at some point, for one permutation) makes it unusable in production. You can control the style of the generated JavaScript code using the ##gwt.style## pom property.
222 -
223 -To update the editor of an XWiki Enterprise instance you have to update the ##resources/js/xwiki/wysiwyg/xwe## directory and the ##WEB-INF/lib/xwiki-web-wysiwyg.jar## with the ones from the war generated by the ##wysiwyg## module build. Note that the server side code of the WYSIWYG editor depends on the XWiki platform core and thus the ##xwiki-web-wysiwyg## and ##xwiki-core## jars should have the same version.
224 -
225 -=== Version 2.3.x and newer ===
226 -
227 -Starting with version 2.3 the ##wysiwyg## module was split in two:
228 -
229 -* ##xwiki-gwt-wysiwyg-client##
230 -* ##xwiki-gwt-wysiwyg-server##
231 -
232 -The client side module generates two jars. One is required at GWT compile time and the other, containing classes and interfaces shared between the client side and the server side code, is required at runtime. The server side module generates a war which contains mainly the GWT-compiled JavaScript code and two jars: the shared classes and the server side Java code.
233 -
234 -As it used to happen with the ##wysiwyg## module prior to version 2.3, when building the ##xwiki-gwt-wysiwyg-server## module the GWT compiler generates by default all the permutations (browser x locale) and thus requires a lot of resources. You can use the ##-Pdev## maven profile to generate just one permutation, specified in the ##WysiwygDev.gwt.xml## module descriptor. Note that this file is now located in the ##xwiki-gwt-wysiwyg-client## module. As a result, if you want to change the default development permutation (Firefox + English) you have to first build the client side module and then the server side module using the ##-Pdev## profile.
235 -
236 -=== Running unit tests in browser ===
237 -
238 -Beginning with version 2.2 unit tests are run by default using HtmlUnit (GWT >=2.0) which tries to emulate the browser. Some of the JavaScript API is still not supported (e.g. Selection API is partially implemented) and thus we are forced to disable some of the tests in HtmlUnit mode. Fortunately we can run all the tests in a real browser using the ##-Pmanual## maven profile. When this profile is active the build stops at the ##integration-test## lifecycle phase and waits for you to point your browser to a given URL. Tests can run in both Java and JavaScript code. You can tweak the test parameters by editing the pom.
239 -
240 240  = Troubleshooting =
241 241  
242 242  == Dealing with Out-of-Memory Errors ==
... ... @@ -298,11 +298,11 @@
298 298  ...
299 299  {{/code}}
300 300  
301 -It seems there's a bug in Maven 3.0.1. To work around it, use Maven 3.0 instead.
237 +It seems there's a bug in Maven 3.0.1. To work around it, use Maven 3.0. instead.
302 302  
303 303  = Build Tools =
304 304  
305 -We have developed some build tools in the form of Maven plugins. They are located in the [[##platform/xwiki-tools/## directory>>https://github.com/xwiki/xwiki-platform/tree/master/xwiki-platform-tools]]. Here are descriptions of some of them:
241 +We have developed some build tools in the form of Maven plugins. They are located in the [[##commons/tools##>>https://github.com/xwiki/xwiki-commons/tree/master/xwiki-commons-tools]] and [[##platform/xwiki-tools/##>>https://github.com/xwiki/xwiki-platform/tree/master/xwiki-platform-tools]] directories. Here are descriptions of some of them:
306 306  * ##xwiki-packager-plugin##: Takes XWiki pages defined as XML files and located in ##src/main/resources/## and load them into a database (defined by ##src/main/packager/hibernate.cfg.xml##). An example usage is available [[here>>https://github.com/xwiki/xwiki-platform/tree/master/xwiki-platform-tools/xwiki-platform-tool-packager-plugin/src/it/basic-import-export]].
307 307  
308 308  = Building in Eclipse =

Get Connected