|  | = Gerrit Code Review - Building plugins | 
|  |  | 
|  |  | 
|  | From build process perspective there are three types of plugins: | 
|  |  | 
|  | * Maven driven | 
|  | * Buck in tree driven | 
|  | * Buck standalone driven | 
|  |  | 
|  | These types can be combined: if both files in plugin's root directory exist: | 
|  |  | 
|  | * `BUCK` | 
|  | * `pom.xml` | 
|  |  | 
|  | the plugin can be built with both Buck and Maven. | 
|  |  | 
|  |  | 
|  | == Maven driven build | 
|  |  | 
|  | If plugin contains `pom.xml` file, it can be built with Maven as usually: | 
|  |  | 
|  | ---- | 
|  | mvn clean package | 
|  | ---- | 
|  |  | 
|  | Exceptions from the rule above: | 
|  |  | 
|  | === Exception 1: | 
|  |  | 
|  |  | 
|  | Plugin's `pom.xml` references snapshot version of plugin API: | 
|  | `2.8-SNAPSHOT`. In this case there are two possibilities: | 
|  |  | 
|  | * switch to release API. Change plugin API version in `pom.xml` from | 
|  | `2.8-SNAPSHOT` to `2.8.1` and repeat step 1 above. | 
|  | * build and install `SNAPSHOT` version of plugin API in local Maven repository: | 
|  |  | 
|  | ---- | 
|  | buck build api_install | 
|  | ---- | 
|  |  | 
|  | === Exception 2: | 
|  |  | 
|  | Plugin's `pom.xml` references other own or foreign (unpublished) libraries or | 
|  | even other Gerrit plugins. These libraries and/or plugins must be built and | 
|  | installed in local Maven repository. Clone the related projects and issue | 
|  |  | 
|  | ---- | 
|  | mvn install | 
|  | ---- | 
|  |  | 
|  | Repeat step 1. above. | 
|  |  | 
|  |  | 
|  | == Buck in tree driven | 
|  |  | 
|  |  | 
|  | The fact that plugin contains `BUCK` file doesn't mean that building this | 
|  | plugin from the plugin directory works. For now it doesn't. Buck in tree driven | 
|  | means it can only be built from within Gerrit tree. Clone or link the plugin | 
|  | into gerrit/plugins directory: | 
|  |  | 
|  | ---- | 
|  | cd gerrit | 
|  | buck build plugins/<plugin-name>:<plugin-name> | 
|  | ---- | 
|  |  | 
|  | The output can be normally found in the following directory: | 
|  |  | 
|  | ---- | 
|  | buck-out/gen/plugins/<plugin-name>/<plugin-name>.jar | 
|  | ---- | 
|  |  | 
|  | Some plugins describe their build process in `src/main/resources/Documentation/build.md` | 
|  | file. It may worth checking. | 
|  |  | 
|  | == Buck standalone driven | 
|  |  | 
|  | Only few plugins support that mode for now: | 
|  |  | 
|  | ---- | 
|  | cd reviewers | 
|  | buck build plugin | 
|  | ---- | 
|  |  | 
|  | GERRIT | 
|  | ------ | 
|  | Part of link:index.html[Gerrit Code Review] | 
|  |  | 
|  | SEARCHBOX | 
|  | --------- |