Including libraries while avoiding conflicts for code that uses your code
<p><strong>Concrete Example:</strong></p>

<p>I'm writing a library to provide a given functionality. When writing my library, rather than reinventing the wheel, I want to use Apache Commons (ie, StringUtils, etc). Unfortunately, if I include that library with mine, either as a separate jar or built into my own jar (build-with-dependencies), I force Apache Commons on anyone that uses my library... plus I force the version that I used on them.</p>

<p><strong>Question:</strong></p>

<p>Is there a way to create a library/jar in Java that depends on a 3rd party library without forcing that library (or worse, version of that library) on those who use your library?</p>
