Skip to content

3.x package collision with 2.x #543

@jtnord

Description

@jtnord

The 3.x line uses the same package names as the 2.x line.

This causes issues where a library uses 2.x and another one uses 3.x and you want to use them both in an application.

Ideally when breaking changes (on a rare occaision) the maven artifactId should be updated along with the package names.

possible solutions to this are shading the dependency in the application which would need to shade all libraries using the 2.x line in a separate maven module and then include those, but shading is an instrument of last resort.

I guess it is probably too late now - but would there be a chance of a 3.x version with different artifactId and different packages?
or abandon the 3x and jump to 4.x with this rename (which I do understand would be a pain to users who are using 3.x - but would be a one time hit and relatively easy to do with an IDE refactor)?

An example of this is usage in Jenkins plugins (and whilst we could disect Jenkins plugin classloader isolation or lack of) we where looking to replace guava due to its breakages and use caffiene as the cache replacement - but as Jenkins is currently using java8 we would use the 2.x line, but in the future we are looking to move to Java11 and at that point expect some plugins to want to start using shiny new things. e.g. jenkinsci/stapler#213

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions