Code Monkey home page Code Monkey logo

spring-boot-bom's Introduction

Spring Boot BOM - 2.7.x

This Bill Of Materials for Spring Boot 2.7 contains starters which are currently used by the 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: 2.7.3

Spring Cloud
Integration
  • RESTEasy: 3.15.3.Final

  • Tomcat: 10.0.23

ORM
  • Hibernate: 6.1.2.Final

  • Hibernate Validator: 7.0.5.Final

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:
  • Alpha (first semi-stable releases),

  • Beta (no more API changes, bugs might still occur),

  • CR (Candidate Release, release quality but minor bugs or known postponed issues are possible),

  • Final (release version),

  • SP (Service Patch, post-release version for fixes needed after a release).

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 SB-162 for a discussion of BOM versioning.

Releasing

The artifacts are released on 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.

spring-boot-bom's People

Contributors

alesj avatar atomist-bot avatar aureamunoz avatar cmoulliard avatar geoand avatar iocanel avatar jacobdotcosta avatar kameshsampath avatar lincolnthree avatar metacosm avatar michalszynkiewicz avatar radekkoubsky avatar rhfauri avatar sgitario avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

spring-boot-bom's Issues

Update examples to use snowdrop-dependencies as parent

Incompatibility between `spring-cloud-starter-kubernetes-fabric8-config` and `Dekorate`

When using spring-cloud-starter-kubernetes-fabric8-config and Dekorate, there is an incompatiblity issue because spring-cloud-starter-kubernetes-fabric8-config requires fabric8:kubernetes-client:4.x and Dekorate fabric8:kubernetes-client:5.x.

This can be sorted out by excluding the fabric8:kubernetes-client:4.x from spring-cloud-starter-kubernetes-fabric8-config, for example:

https://github.com/snowdrop/configmap-example/pull/92/files#diff-9c5fb3d1b7e3b0f54bc5c4182965c4fe1f9023d449017cece3005d3f90e8e4d8R84

Dependency included at the wrong place

This spring cloud starter is included within the list of the spring boot starter dependencies

     <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>${spring-cloud-netflix.version}</version>
      </dependency>

It should be moved under the list of the spring cloud starters

Kubernetes/OpenShift Client version conflict

In the bom, we explicitly declare version 2.2.14 for both Kubernetes and OpenShift Client. When using this bom in a booster, there is a conflict with Kubernetes/OpenShift client version 1.4.34 within io.openshift:openshift-test-utils which throws .

Workaround si to explicitly declare version in the booster pom:

    <dependency>
      <groupId>io.fabric8</groupId>
      <artifactId>kubernetes-client</artifactId>
      <version>1.4.34</version>
    </dependency>
    <dependency>
      <groupId>io.fabric8</groupId>
      <artifactId>openshift-client</artifactId>
      <version>1.4.34</version>
    </dependency>

In future, we will replace OpenShiftTestAssistant with Arquillian Cube which has its own solution for version conflicts, see http://arquillian.org/arquillian-cube/#_dealing_with_version_conflicts

Add Spring Cloud Sleuth and Spring Cloud Sleuth Otel dependencies

This is a requirement to use Opentelemetry instead of Opentracing.

The configuration that should be added is:

<properties>
  <spring-cloud-sleuth.version>3.1.3</spring-cloud-sleuth.version>
  <spring-cloud-sleuth-otel.version>1.1.0-M6</spring-cloud-sleuth-otel.version>
</properties>

<dependencyManagement>
  <dependencies>
<!-- Sleuth with Brave tracer implementation -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
        <version>${spring-cloud-sleuth.version}</version>
        <exclusions>
          <!-- Exclude Brave (the default) -->
          <exclusion>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-sleuth-brave</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- Add OpenTelemetry tracer -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-sleuth-otel-autoconfigure</artifactId>
        <version>${spring-cloud-sleuth-otel.version}</version>
      </dependency>
  </dependencies>
</dependencyManagement>

This has to be done for Spring Boot 2.7.x (it's not compatible with Spring Boot 2.5.x) (related task is #203).

Update examples to use 2.2.6.Beta1

Update the examples to use snowdrop-dependencies 2.2.6.Beta1 and fix CI issues if any exists (possibly missing spring-boot.version property)

Release Spring Boot 2.2

Release a new version of SB as Red Hat Productized:

  • Contact the Starter's owner to ask them if they will and when release 2.2.
  • This document contains the informations about the versions of dependencies of the snowdrop BOM.
  • Jira ticket here

Update Narayana in all the branches

Narayana 2.1.3, 2.3.2 and 2.4.0 have been released. All of them contain a bug fix that adds a missing synchronization registry configuration. We should update them in appropriate BOM branches so that they could be included in the next release. No need to make a release just for this change though.

Rename repository and artifacts to align with Spring Boot naming conventions

Hi. It's great to see you participating in the Spring Boot ecosystem. We have a section in the Spring Boot reference documentation with some guidelines about artifact naming. The section talks specifically about starters but the intent is that it is more generally applicable to projects and artifacts in the Spring Boot ecosystem.

Would you please consider renaming this repository and the artifacts it produces to align with the guidelines? Similar updates would be welcome in several other repositories in the Snowdrop organisation.

Release Spring Boot 2.1.12

Release a new version of SB as Red Hat Productized:

  • Contact the Starter's owner to ask them if they will and when release 2.2.
  • This document contains the informations about the versions of dependencies of the snowdrop BOM.
  • Jira ticket here

Making BOM Simpler

When I was trying to use Spring 1.5.x BOM - I see its too huge with great length of Spring Boot BOM - wondering if we could just import needed spring--bom in them so that they align with right Spring framework versions

circleci tests are failing for 2.4.3

The circleci tests are failing for release 2.4.3.

This is the error:

...
[INFO] Snowdrop Test Suite - Parent ....................... SUCCESS [  0.334 s]
[INFO] Snowdrop Test Suite - Common ....................... SUCCESS [  0.019 s]
[INFO] Snowdrop Test Suite - Common - Entities ............ SUCCESS [ 15.939 s]
[INFO] Snowdrop Test Suite - Common - Utils ............... SUCCESS [  7.827 s]
[INFO] Snowdrop Test Suite - Data JDBC .................... FAILURE [  1.132 s]
[INFO] Snowdrop Test Suite - Data JPA ..................... SKIPPED
[INFO] Snowdrop Test Suite - Health Check ................. SKIPPED
[INFO] Snowdrop Test Suite - Hibernate .................... SKIPPED
[INFO] Snowdrop Test Suite - REST ......................... SKIPPED
[INFO] Snowdrop Test Suite - REST - RESTEasy .............. SKIPPED
[INFO] Snowdrop Test Suite - Caching ...................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.428 s
[INFO] Finished at: 2021-02-22T16:23:50+00:00
[INFO] Final Memory: 74M/546M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile (default-testCompile) on project data-jdbc: Compilation failure: Compilation failure:
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationTest.java:[20,17] package org.junit does not exist
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationTest.java:[21,24] package org.junit.runner does not exist
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationTestBase.java:[19,17] package org.junit does not exist
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationTest.java:[31,2] cannot find symbol
[ERROR] symbol: class RunWith
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationIT.java:[23,17] package org.junit does not exist
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationIT.java:[24,24] package org.junit.runner does not exist
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationIT.java:[31,2] cannot find symbol
[ERROR] symbol: class RunWith
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationTest.java:[38,6] cannot find symbol
[ERROR] symbol:   class Before
[ERROR] location: class dev.snowdrop.testsuite.jdbc.RecordsApplicationTest
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationTestBase.java:[46,6] cannot find symbol
[ERROR] symbol:   class Test
[ERROR] location: class dev.snowdrop.testsuite.jdbc.RecordsApplicationTestBase
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationTestBase.java:[64,6] cannot find symbol
[ERROR] symbol:   class Test
[ERROR] location: class dev.snowdrop.testsuite.jdbc.RecordsApplicationTestBase
[ERROR] /tmp/testsuite/data-jdbc/src/test/java/dev/snowdrop/testsuite/jdbc/RecordsApplicationIT.java:[38,6] cannot find symbol
[ERROR] symbol:   class Before
[ERROR] location: class dev.snowdrop.testsuite.jdbc.RecordsApplicationIT
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
...

Spring Boot BOM for 2.7.x in maven.repository.redhat.com/ga/

hi team,
im looking for the 2.7.x snowdrop bom version in redhat maven ga

https://maven.repository.redhat.com/ga/dev/snowdrop/snowdrop-dependencies/

but the latest version i see is 2.5.12.Final-redhat-00001
are we planning to deploy redhat's version of 2.7.x there?

thank you.

Create a snowdrop-spring-boot-dependencies bom

It is my understanding (ready to stand corrected!) that creating a spring boot application that uses the snowdrop bom follows this expected pattern:

<project>
  ...
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>me.snowdrop</groupId>
        <artifactId>spring-boot-bom</artifactId>
        <version>2.1.6.SP3-redhat-00001</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  ...
</project>

The problem with dependency imports is that it doesn't apply to plugins.

In the appsody stack, I've opted to use the spring-boot-dependencies pom as the parent (it introduces no behavior, but does pin versions using property values). While I know a lot of people don't like parent poms, it does make sense for the relationship between an appsody stack and its related/managed/dependent projects.

Bearing Andy Wilkinson's naming conventions in mind, is there a way to split this bom into two pieces: a snowdrop-spring-boot-dependencies pom, and then the snowdrop-spring-boot-bom that can use those dependencies (which then has the release profile in it, etc.)

My goal would be to switch the parent pom for a snowdrop-based stack from the "generic" spring-boot-dependencies to a "snowdrop-spring-boot-dependencies". And the only difference between them should be the values of version variables, and the addition of any dependencies or plugins that might be missing.

Possible wrong dependency on 2.1.4.RELEASE-redhat-00001

We need to investigate this:

Mail from Marek Novotny:

Naina, Rajesh,

We (me and Ant) looked at multiple places and that confused us.

First PNC build for 2.1.12 referenced in released folder supports earlier change which was merged in our source code
http://orch.psi.redhat.com/pnc-web/#/projects/22/build-configs/817/build-records/41786/dependencies -> Spring Boot
2.1.12.RELEASE and Springframework at 5.1.13.RELEASE
and [2] Spring boot parent too have defined that 2.1.12.RELEASE version. So far so good we did that change which looks correct.

But there was a seed of confusion in point 3 in the following still coming from
http://download.eng.brq.redhat.com/released/jboss/rhoar/spring-boot/2.1.12/ which has these details in lists of dependencies:

  1. the redhat starters have 2.1.1.redhat-00001
  2. redhat built BOM - me.snowdrop:spring-boot-bom:2.1.12.Final-redhat-00001
  3. BOM for upstream managed dependencies org.springframework.boot:spring-boot-dependencies:2.1.4.RELEASE-redhat-00001 which
    doesn't corresponds with the above versions.

It seems as an internal version from a different like AMQ boot starter(s) as we would expect it will be 2.1.12.RELEASE-redhat-00001

And that 2.1.4.RELEASE-redhat-00001 [3] declares the values which I wrote in the email with showing wrong versions.

So it could be that, but with careful looking at top of RHOAR SB BOM and confirmation that transitive AMQ SB starter BOM is just
outdated and doesn't matter for us is lucky output from this email thread.

Regards,

[1] - http://download.eng.brq.redhat.com/released/jboss/rhoar/spring-boot/2.1.12/extras/repository-artifact-list.txt
[2] -
https://code.engineering.redhat.com/gerrit/gitweb?p=spring-boot/bom-parent.git;a=blobdiff;f=pom.xml;h=8de837f441f6b704abbd884b9040ae7836501b24;hp=1d73ec390e076ac8dac0f4d430e04a26df70985e;hb=5fb131866aa5ac34e31b5c8f6ea0fbd81625947a;hpb=6d72a7387cd6a9138107af27bd1d0dfdfbba3881
[3] -
https://repository.jboss.org/nexus/service/local/repositories/product-amq-client-02_04_00/content/org/springframework/boot/spring-boot-dependencies/2.1.4.RELEASE-redhat-00001/spring-boot-dependencies-2.1.4.RELEASE-redhat-00001.pom

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.