As a creator of a software library, how can I verify backward compatibility with earlier versions?
When using a dependency management (here: Maven), multiple versions of my dependency could be (transitively) used:
com.example:some-project:jar:1.0.0 +- com.example:my-library:jar:1.1.0:compile +- org.example:another-library:jar:1.0.0:compile \- com.example:my-library:jar:1.0.0:compile
As you can see, some-project is directly using my-library, but it is also a transitive dependency of another-library in an older version. Maven will include version 1.1.0 (see dependency mediation) and I want to ensure backwards compatibility between different minor versions so this is guaranteed to work (no accidental API changes from 1.0.0 to 1.1.0).
Are there any common practices to verify compatibility? All I can think of is some kind of smoketest script that builds such scenarios and tries to run them.