2013-12-22 31 views
3

我有一段代码是适用于其他解决方案的代码(例如:A,B,C)。用户选择他们将在他们的项目中使用哪种解决方案(只有一种)(通过此适配器)。显然,我仍然需要用A,B,C依赖关系编译我的代码。但是我不想在A,B,C上都有compile依赖关系 - 例如,如果用户选择解决方案A,他不需要包含B或C.Maven:可选提供的范围?

我应该声明A,B,C依赖项在我的POM为:

  1. provided
  2. provided,但optional
  3. 刚从POM
  4. 删除

换句话说:的确provided意味着用户必须在其运行时提供实现?

Thanx!

编辑:类似this question

回答

2

它应该是provided - optional

查看链接的问题的答案。

0

你应该使用提供。据推测他们正在实现一个你有共同点的界面(无论是你的还是第三方)。您可以根据接口进行编译,并且在运行时不知何故,它们提供了实现。

+0

换句话说,“提供但可选”没有意义? '提供'是否意味着用户必须提供实现? – igr

+0

这取决于你的代码,但大多数答案是肯定的。如果未提供依赖关系,那么您很可能会发现类没有发现异常,尽管您可能可以根据您的应用程序的配置进行编码。一般来说,这有点困难。可选的依赖关系并不意味着这一点。 –