Making a Release of a Gerrit Subproject
=======================================

[[make-snapshot]]
Make a Snapshot
---------------

* Build the latest snapshot and install it into the local Maven
repository:
+
====
  mvn clean install
====

* Test Gerrit with this snapshot locally


Publish Snapshot
----------------

If a snapshot for a subproject was created that should be referenced by
Gerrit while current Gerrit development is ongoing, this snapshot needs
to be published.

* Make sure you have done the configuration needed for deployment:
** link:dev-release-deploy-config.html#deploy-configuration-settings-xml[
Configuration in Maven `settings.xml`]
** link:dev-release-deploy-config.html#deploy-configuration-subprojects[
Configuration for Subprojects in `pom.xml`]

* Deploy the new snapshot:
+
====
  mvn deploy
====

* Change the `id`, `bin_sha1`, and `src_sha1` values in the `maven_jar`
for the subproject in `/lib/BUCK` to the `SNAPSHOT` version.
+
When Gerrit gets released, a release of the subproject has to be done
and Gerrit has to reference the released subproject version.


[[prepare-release]]
Prepare the Release
-------------------

* link:#make-snapshot[First create (and test) the latest snapshot for
the subproject]

* Update the top level `pom.xml` in the subproject to reflect
the new project version (the exact value of the tag you will create
below)

* Create the Release Tag
+
====
 git tag -a -m "prolog-cafe 1.3" v1.3
====

* Build and install into local Maven repository:
+
====
  mvn clean install
====


[[publish-release]]
Publish the Release
-------------------

* Make sure you have done the configuration needed for deployment:
** link:dev-release-deploy-config.html#deploy-configuration-settings-xml[
Configuration in Maven `settings.xml`]
** Configuration in `pom.xml` for
link:dev-release-deploy-config.html#deploy-configuration-subprojects[subprojects]

* Deploy the new release:
+
====
  mvn deploy
====

* Push the pom change(s) to the project's repository
`refs/for/<master|stable>`

* Push the Release Tag
+
====
  git push gerrit-review refs/tags/v1.3:refs/tags/v1.3
====


GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
