RadekKoubsky / spring-boot-bom

OpenShift.io :: Project :: Bom for Spring-Boot
0 stars 0 forks source link

Upstream vs productized #3

Open cmoulliard opened 7 years ago

cmoulliard commented 7 years ago

The current BOM file includes productized versions of Apache Tomcat created for Red Hat

<!--
<version.org.apache.tomcat.embed.tomcat-embed-core>8.0.36.redhat-14</version.org.apache.tomcat.embed.tomcat-embed-core>
<version.org.apache.tomcat.embed.tomcat-embed-el>8.0.36.redhat-14</version.org.apache.tomcat.embed.tomcat-embed-el>
<version.org.apache.tomcat.embed.tomcat-embed-jasper>8.0.36.redhat-14</version.org.apache.tomcat.embed.tomcat-embed-jasper>
<version.org.apache.tomcat.embed.tomcat-embed-websocket>8.0.36.redhat-14</version.org.apache.tomcat.embed.tomcat-embed-websocket>
-->
<version.org.apache.tomcat.embed.tomcat-embed-core>8.0.36</version.org.apache.tomcat.embed.tomcat-embed-core>
<version.org.apache.tomcat.embed.tomcat-embed-el>8.0.36</version.org.apache.tomcat.embed.tomcat-embed-el>
<version.org.apache.tomcat.embed.tomcat-embed-jasper>8.0.36</version.org.apache.tomcat.embed.tomcat-embed-jasper>
<version.org.apache.tomcat.embed.tomcat-embed-websocket>8.0.36</version.org.apache.tomcat.embed.tomcat-embed-websocket>

<!--
<version.org.hibernate.hibernate-validator>5.2.4.Final-redhat-</version.org.hibernate.hibernate-validator>
-->
<version.org.hibernate.hibernate-validator>5.2.4.Final</version.org.hibernate.hibernate-validator>

As such artefacts are only published on Red Hat maven repository not publicly available, we can't use them for upstream projects

In order to be able to use upstream vs non upstream versions, the Maven GAVs could be either :

1) Manage in a separate branch or tag of the BOM file 2) Handle using a project responsible to replace the version of the GAV when we release - see upstream or for the product

RadekKoubsky commented 7 years ago

My assumption about the spring-boot-bom is: If you want to use spring-boot with redhat, use this bom which contains red hat artifacts tested with spring-boot (e.g. tomcat)

If you want to use upstream versions, override them in your project or use official spring-boot bom or parent (e.g. spring-boot-starter-parent)

cmoulliard commented 7 years ago

The Spring Boot BOM file you created contains also Fabric8 lib. If we want to use it for production release only (= RHOAR), then it will be required to :

1) Update the booster common file to include Fabric8 libs, 2) Create 2 branches / mission; one using Spring Boot Starter BOM & the other the one for productization, 3) Sync dependencies of the Spring Boot BOM with our to detect differences, 4) Tests the missions using one of the 2 BOMs file ....

Is it what we want to do ?

RadekKoubsky commented 7 years ago

Not sure about this, I will ask Ladislav what is his idea about productized vs upstream spring-boot-bom.

Ladicek commented 7 years ago

Sorry, I don't understand what's this all about.

I'd like to point out one thing: please look at how Swarm or Vert.x BOMs are used. This is exactly how the Spring Boot BOM should be used. It shouldn't inherit from the booster parent POM, it shouldn't include anything related only to boosters, it should just define versions of the certified Spring Boot parts. I understand that we need the dependencies on Fabric8 stuff for Spring Cloud Kubernetes, and we should align with the versions used in boosters, but that's all we can do really. If we align those versions using some common parent POM (which the booster parent POM would also inherit from), I don't really mind -- I see some upsides but also downsides.

Whether we should have an upstream and downstream variant of this POM -- I don't really mind either. I guess the difference would only be in the Tomcat versions -- we don't use productized versions of anything else here AFAIK.