Creating objects in Java using `new` keyword was a no brainer for many years! Then IoC / DI questioned the approach and component containers changed the way we think about it!
Managing dependencies between artifacts is yet another topic we still tend to think we have sorted out. Maven central has become the de facto standard artifact repository. Yet it's far from perfect as it is still developer's responsibility to know and configure proper dependencies. This easily becomes nightmare with transitive and provided dependencies. So may be it's time to challenge that approach too? What if we move from hardcoded artifacts to artifact discovery based on well defined contracts?
This talk will demonstrate how that can be done today using OSGi Requirements and Capabilities specification in combination with existing Maven plugins. It will present a PoC for Maven extension that makes it very easy to discover artifacts and assemble applications (both standalone and deployed in containers). It will also point out the issues and draft a potential roadmap to fully automated, contract based dependency management!