如何避免从其他包暴露接口

时间:2015-05-05 21:08:50

标签: java maven jar interface gradle

让我们说一个接口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个位置更新它,并需要跟踪版本依赖性。

有更简单的方法吗?

0 个答案:

没有答案