Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set versionScheme to PVP in pom.xml for Scala users #10694

Closed
joroKr21 opened this issue Nov 21, 2023 · 1 comment
Closed

Set versionScheme to PVP in pom.xml for Scala users #10694

joroKr21 opened this issue Nov 21, 2023 · 1 comment

Comments

@joroKr21
Copy link

Is your feature request related to a problem?

Yes, the problem is that grpc-java intentionally breaks binary backwards compatibility in a minor version release:
https://github.com/grpc/grpc-java/releases/tag/v1.59.0

Meanwhile it's fairly standard to assume semantic versioning in the Java ecosystem. See https://semver.org/

Describe the solution you'd like

Scala (sbt) users can benefit from a version scheme property set in the pom.xml which will fail the build when binary incompatible versions of the same library are on the classpath. The version policy which allows breaking changes in minor versions is PVP. So if we add this property to the POM, it will prevent issues:

<properties>
    <info.versionScheme>pvp</info.versionScheme>
</properties>

Describe alternatives you've considered

Additional context

Currently if grpc-java is updated via some transitive dependencies to 1.59.0 while other transitive dependencies remain on older versions we get a binary compatibility issue at runtime: java.lang.ClassNotFoundException: io.grpc.internal.AbstractManagedChannelImplBuilder

@joroKr21
Copy link
Author

This won't help if only the same version is compatible at runtime: #10406 (comment)

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 21, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant