让我们说一个接口MyInterface出现在jar A中.jar B实现了接口。现在如果我必须使用这个接口,我需要依赖于jar A和B。避免这种双重依赖的最佳方法是什么?问题是如果你使用gradle你需要为jar A和jar B指定一个版本。在2个地方更新很棘手,有一半我看到其中一个更新但不是另一个。我想的一种方法是在jarB上实现MyInterface2并要求修改下游使用者以使用MyInterface2,他们只能在Jar B上声明依赖。但gradle将执行传递依赖性walk,以便它们只能声明一个版本。有什么想法/评论吗?
//======> Jar A <======
public interface MyInterface {
public void doSoemthing();
}
// ======> Jar B <=======
public class Impl1 implements MyInterface {
public void doSomething() { }
}
Jar B的gradle文件看起来像
compile('package:jarA:<Version>')
==&GT;项目1&lt; ============
MyInterface foo = new Impl1();
gradle文件看起来像
compile('package:jarA:<Version>')
compile('package:jarB:<Version>')
我遇到的问题是我希望gradle从传递依赖中引入jarA,但如果不存在,我会收到编译错误,说它无法找到MyInterface。但是,如果我有明确的版本,我需要在2个位置更新它,并需要跟踪版本依赖性。
有更简单的方法吗?