Build
=====

This plugin is built with Buck.

Two build modes are supported: Standalone and in Gerrit tree. Standalone
build mode is recommended, as this mode doesn't require local Gerrit
tree to exist.

Build standalone
----------------

Clone bucklets library:


  git clone https://gerrit.googlesource.com/bucklets


and link it to examples directory:


  cd examples && ln -s ../bucklets .


To build a specific example plugin, issue the following command:


  cd example-<example> && buck build plugin


The output or each example is created in


  buck-out/gen/example-<example>.jar

To execute the tests run:


  buck test


Build in Gerrit tree
--------------------

Clone or link this plugin to the plugins directory of Gerrit's source
tree, and issue the command:


  buck build plugins/examples/example-<example>


The output is created in


  buck-out/gen/plugins/examples/example-<example>/example-<example>.jar


This project can be imported into the Eclipse IDE:


  ./tools/eclipse/project.py


To execute the tests run:


  buck test --include examples/example-<example>

Note that for compatibility reasons a Maven build is provided, but is considered
to be deprecated and will be removed in a future version of this plugin.

To build with Maven, change directory to the specific example plugin folder and
issue the command:


  mvn clean package


When building with Maven, the Gerrit Plugin API must be available.

How to build the Gerrit Plugin API is described in the Gerrit
documentation (../../../Documentation/dev-buck.html#_extension_and_plugin_api_jar_files).
