Skip to content

Question: How to handle published interdependent libraries #17

@zfreeds

Description

@zfreeds

Hi, I love the videos and they've been very helpful for understanding Gradle. One issue I've been thinking about a lot is: What's the best way to handle the versioning of interdependent (private) libraries owned by different teams? For example:

Upgrading Transitive Dependencies Leads to NoSuchMethod

I'm noticing issues like NoSuchMethod being thrown if a consumer wants to use an upgraded version of a dependency other libraries depend on. I'm thinking that strict version constraints to MAJOR versions can help fail earlier but that only works as long as no one accidentally releases a minor/patch version that's not backwards-compatible. Honestly, I'm so surprised this isn't a problem affecting public dependencies.

I imagine you will suggest Version Catalogs or Platforms - does that require one team own/verify it? Is there a way to test that all the libraries are compatible with eachother and/or backwards-compatible with themselves?

Supporting Multiple Variants

Some libraries still need to support Spring Boot 2 vs Spring Boot 3. Would you suggest using feature variants? This might require two separate platforms or catalogs. Currently, we have core libraries and a library for each variant like micronaut/spring.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions