= 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
---------
