我尝试运行同时使用libraryA
和libraryB
的单元测试。
LibraryA依赖于com.oldlib:dependencyX:2.0
。 LibraryB依赖于com.newlib:dependencyX:3.0
。
注意dependencyX
2.0和3.0是相同的库但是在发行版之间更改了groupID(不确定这是否相关)。内部包名称在2和3之间相同。
dependencyX
的API更改介于2.0之间。如果我强制maven(使用依赖/排除)仅使用dependencyX:2.0
,则libraryB会在3.0中为新类抛出类未找到的异常。如果我强制maven仅使用dependencyX:3.0
,则libraryA会抛出方法未找到的异常,因为某些API在2.0和3.0之间被删除。
有没有可以在单元测试中隔离这些?我知道OSGI - 如果maven能够以类似osgi的方式将依赖关系无缝地隔离到单独的类加载器中而不必实际设置所有osgi内容,那将会非常巧妙。
(有罪的库是apache storm 0.10.0和cassandra-unit,有罪的依赖是com.lmax:disruptor / com.googlecode:disruptor)。