snowdrop / spring-boot-bom

Apache License 2.0
4 stars 16 forks source link
bom dependencies-collector maven openshift rhoar spring-boot

// spring-boot :spring-boot.version: 2.7.3

= Spring Boot BOM - 2.7.x

This Bill Of Materials for Spring Boot 2.7 contains starters which are currently used by the https://github.com/snowdrop?utf8=✓&q=topic%3Abooster[Spring Boot Mission Boosters]. This document is updated on a "best effort" basis, based on the information contained in the pom.xml file. In case of inconsistency between this document and the POM file, the POM information prevails.

This BOM is aligned to:

.Spring // spring-boot

.Spring Cloud // spring-cloud-kubernetes

.Integration

.ORM // hibernate

== Versioning scheme

This BOM is using the following versioning scheme:

dev.snowdrop:snowdrop-dependencies:<targeted spring boot release version>.<qualifier>[1-9]

.Qualifiers, in chronological order:

Qualifiers are numbered and we should try to limit their number to 9 but we should still be able to handle more than 10 versions for a given qualifier.

Until a version is released, the BOM version will be <target spring boot version>-SNAPSHOT. Once it's released, we will switch to <target spring boot version>.SP<current SP version + 1>-SNAPSHOT.

So, right now, as we are targeting Spring Boot version 2.7.3.RELEASE, our BOM GAV will be: dev.snowdrop:snowdrop-dependencies:2.7.3-SNAPSHOT until released. The released version will be dev.snowdrop:snowdrop-dependencies:2.7.3.Final and the new version in the 2.3 branch will be dev.snowdrop:snowdrop-dependencies:2.7.3.SP1-SNAPSHOT.

See https://issues.jboss.org/browse/SB-162[SB-162] for a discussion of BOM versioning.

== Releasing

The artifacts are released on http://central.sonatype.org/[Sonatype Open Source Software Repository Hosting (OSSRH)], which is then synchronized to Maven Central. To perform a release, you need to activate the release profile.

  1. Make sure that your computer is properly set up as explained in http://central.sonatype.org/pages/apache-maven.html. In particular, this implies having a Sonatype JIRA account, added the appropriate configuration in your Maven settings.xml and having GPG set up on your computer.
  2. Check this README for outdated information, notably dependency versions.
  3. Prepare the release: mvn release:prepare -Prelease on a "clean" repository (i.e. everything is committed and pushed). Note that the project version in the POM file needs to end in -SNAPSHOT to be recognized as needing release.
    • The release plugin will ask you several questions based on the current project version. Let's assume we're trying to release the 1.5.8.Beta2 of the BOM. The current project version should be 1.5.8-SNAPSHOT if the version conventions (above) have been properly followed. Based on this, the release plugin will offer to release version 1.5.8 of the BOM.
    • Override this version by type 1.5.8.Beta2
    • Override the tag name to use the same version: 1.5.8.Beta2 instead of the default suggestion
    • Override the suggested next release version as appropriate, in this case, since we're haven't released a final version of the 1.5.8 BOM, the next version still needs to be 1.5.8-SNAPSHOT.
  4. Once this prepare step is done, check that everything is as expected and then release: mvn release:perform -Prelease.
  5. If everything went well, the new artifact should be available on Maven Central after a couple of minutes.

Note that the Sonatype release plugin is configured to auto-release the artifacts from staging, resulting in a faster, more automated release process. This is not mandatory and can be changed in the plugin configuration.