-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Proposal to minimize Dependency Conflicts #2555
Comments
Do we know how much larger the JARs will become? Also it would be good to have more details about the extra debugging complexity. Thank you! |
The total size would be less than you current use (that's one of the gifts of Proguard), but if your app includes the same jar, it will be there twice. This is only for an additional kind of jar that we publish, so you would still be able to use the current jar's. For debugging, this will be similar to what users do on android debugging. |
Move this issue to feature request backlog and close it here. This place can still be used for discussion. |
There is a potential for this creating new problems, and maybe even more problems than it solves. If a user somehow includes a package from anywhere that pulls in one of the jars from the non-uber-jarred version, there will be version problems, similar to the guava vs guava_jdk5 nightmare we have right now. Types from the following packages (at a minimum) are exposed on the surface of google-cloud-java and can't be hidden away:
|
Many customers are running into dependency conflicts using the Java google-cloud (an umbrella package that includes many other artifacts), several of our google-cloud-* artifacts together, and using the google-cloud-* artifacts with other non google-cloud, google artifacts like GoogleCloudPlatform/google-cloud-datastore . This leads to the Maven Dependency issues.
The common java solution of creating a BOM (SpringBoot) (SpringBoot Gradle) and using the maven-enforcer-plugin doesn't work when there are artifacts that aren't well behaved (same JAR, but substantially different method signatures and behaviors) like Netty (See #2398 ) included in the mix. Our customers are running into situations where they are combining our artifacts with those of slower moving open source projects and things are breaking in very unexpected ways.
Additionally, customers appear to be confused by google-cloud as it's marked as alpha, even though it brings in some "GA" artifacts.
@ludoch has proposed (and I agree):
Drawbacks
Better reliability will more than offset the issues with additional size.
We should be able to figure this out for libraries.
(We should publish enough info to figure this out)
Benefits
Of course, all we are doing is trying to solve a problem that Java 9 modules also attempts to solve, but our JAR's can't wait for our customers to all get to Java 9.
The text was updated successfully, but these errors were encountered: