**Escaping dependency hell: a deep dive into Gradle’s dependency management features**
Have you been in the situation where your project builds as expected but a few hours later it won’t anymore? Does this include symptoms such as ClassNotFoundError or NoSuchMethodError exceptions? Well, you are not alone, you probably are or have been in ‘Dependency Hell’ and believe me, we all have been there.
It doesn’t matter if you are about to start a green field project or touching an existing one, most likely you will suffer from this at some point in your career. Unfortunately, compilation issues are not the only symptoms of being in ‘Dependency Hell’, another problems are (and not limited to):
– Intentional and unintentional Breaking API changes in libraries
– Multiple components depending on the same module but with different, incompatible, APIs.
– Multiple libraries providing the same feature (multiple logging libraries).
– Incompatible versions of a runtime.
– Misaligned dependencies of a component
– Depending on transitive dependencies that eventually disappear from our projects
This list can be extensive and overwhelming! As a developer I just want my build to work!
Fortunately, Gradle Build Tool Team has heavily invested engineering efforts for many years in their Dependency Management machinery to address these issues from both sides, the consumer of modules but more importantly, better software modeling for library producers.
In this session we will navigate, as library consumers, how we can influence the dependency resolution machinery in Gradle to keep your build in good state and reproducible. In addition, we will explore a few Gradle features to do better software modeling in order to publish good metadata that benefits consumers of our libraries. Spoiler alert: we will also look into how to address the Jakarta migration without fixing upstream libraries!
Some familiarity with Gradle is recommended but not required.
**About our speaker**
Roberto is an experienced software engineer with focus in the JVM ecosystem and developer productivity He has several years of experience using technologies for the JVM.
He’s an active maintainer of [Netflix Nebula Plugins](https://nebula-plugins.github.io) and occasional contributor to the [Gradle Build tool](https://gradle.org)
Currently works at Netflix in the JVM ecosystem team. The JVM Ecosystem Team provides the user experience for JDK lifecycle, dependency management, building, packaging, and publishing JVM-based libraries and applications through providing tools, automation, and guidance to thousands of engineers at Netflix
5:30pm – 6:00pm: Networking, food and drinks
6:00pm – 7:00pm: Talk session
7:00pm – 7:30pm: More networking
There are 2 entrances for The Railyard parking deck – 1 on Bland Street and 1 on Winona Street
When you arrive, pull a ticket and go through the gate to park.
Once you park, please take the stairs or elevator down to the 1st floor.
Come in through the lobby and take the elevator banks on the South Tower to the 6th floor.
The South Tower elevators are located on the STIR side of The RailYard, opposed to the side with North Italia and Rhino Market & Deli
When you arrive on the 6th floor, it will take you straight to our reception area.
If there is no one to assist you, please ring the Amazon doorbell located on the reception desk.