Michael Holler created FLINK-14444:
--------------------------------------
Summary: Publish BOMs for Flink
Key: FLINK-14444
URL: https://issues.apache.org/jira/browse/FLINK-14444
Project: Flink
Issue Type: Improvement
Reporter: Michael Holler
Hey there! Love the project, but I would love it if there was a BOM file that
is published for each version. If you're not familiar with a BOM, it stands for
"Bill of Materials" it helps your Gradle (in my case, but it's originally a
Maven thing) file look like this (using JDBI's implementation as an example):
{code:java}
dependencies {
implementation(platform("org.jdbi:jdbi3-bom:3.10.1"))
implementation("org.jdbi:jdbi3-core")
implementation("org.jdbi:jdbi3-kotlin")
implementation("org.jdbi:jdbi3-kotlin-sqlobject")
implementation("org.jdbi:jdbi3-jackson2")
}
{code}
Instead of this:
{code:java}
val jdbiVersion by extra { "2.6.1" }
dependencies {
implementation("org.jdbi:jdbi3-core:$jdbiVersion")
implementation("org.jdbi:jdbi3-kotlin:$jdbiVersion")
implementation("org.jdbi:jdbi3-kotlin-sqlobject:$jdbiVersion")
implementation("org.jdbi:jdbi3-jackson2:$jdbiVersion")
}
{code}
Notice how you just leave the versions off when you use a BOM. This can help
reduce the number of dependency compatibility surprises one can encounter,
especially if a transitive dependency brings in a newer version of one of the
components (it'll be reduced to the BOM's version). Note also that you still
have to list dependencies you want with a BOM, just not the versions.
Here's a deeper dive into how a BOM works:
[https://howtodoinjava.com/maven/maven-bom-bill-of-materials-dependency/]
The Maven help site also has a section on it (Ctrl+F for "BOM"):
[https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html]
I think BOMs would be a great for the users of the Flink project because there
are lots of Flink libraries (core, connectors, etc) that require the same
version as other Flink dependencies to work correctly. BOMs were designed for
exactly this use case :)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)