I have an issue which doesn't seem to be well docu...
# dependency-management
j
I have an issue which doesn't seem to be well documented, so I thought I'd ask in here. First, I'm trying to create a merged java-platform BOM that pulls in a BOM from an upstream framework (Quarkus) and merge it with another BOM that I built that has other tools selected above and beyond the Quarkus BOM. So, again, I effectively have a "merge" BOM, which has a platform dependency on the Quarkus and my BOM. Second, I am using "failOnVersionConflict" to check where conflicts between the BOMs occur and silent upgrades might break a transitive dependency. The problem occurs when I try to use this "merge" BOM in another project. For example, if I use "io.quarkus:quarkus-agroal" I get the correct version thanks to the platform BOM, but it eventually pulls a transitive called "org.reactivestreams:reactive-streams". The version pulled transitively is 1.0.3, but the BOM is asking for 1.0.4. I added an extra constraint that strictly requires 1.0.4 in the "merge" BOM to override the transitive dependency, but I still get the version conflict. In this scenario, how does Gradle expect me to resolve transitive conflicts in a way that is reusable?
One alternative solution I suppose is to do some kind of BOM generation (like a lot of Maven projects seem to do) where the dependency constraints are grouped up and flattened into a new BOM.