Reusing code across projects is nice. To ensure proper dependencies, you package your reusable code in JARS than can be then reused as simple dependencies across projects.
I've started to do that extensively. And this is great, especially wih the help of Maven.
But some JARS aren't just one public interface and the rest of the implementation cleanly hidden. And when requirements evolve you have to modify those.
The big problem arise in my case when there is more than a single project using that dependency. How can you refactor your dependency without breaking code in the projects that depend on it??
I'm going to explore Maven poms dependency features and give one more look at IDEA's modules, but I don't think those will give me a solution.
How do you handle that kind of situation? Wouldn't it be possible to have a 'Workspace' of projects, or maybe stipulating which internal projects of your company are dependant and should be checked in case of refactoring?
Experience sharing in this field welcome!