java - Maven3 - 我可以声明需要 "some implementation of api xy"吗

标签 java api maven-3

我经常大量地将我的项目拆分成多模块项目。

我如何在 Maven 3 POM 中声明“API xy 的某些实现必须在包中可用”。

例如,如果我将服务层拆分为 services-apiservices-impl 并在 API 中声明可部署项必须依赖于services-api 的实现,即使它不是 services-impl 模块本身。

这可能吗?

最佳答案

如果您需要一个 API 的实现,那么某物 必须选择哪个实现。如果您不关心哪个,那么您有 2 个选择:

  1. 或者您只需选择一个实现并在 POM 中声明它,使用 <scope>runtime</scope> ,这在编译时排除了 impl,但它将可供容器使用。
  2. 或者您使用或实现 Service Provider Interface (SPI)

引用 Oracle 教程(强调已添加):

A set of programming interfaces and classes that provide access to some specific application functionality or feature. The service can define the interfaces for the functionality and a way to retrieve an implementation.

关于java - Maven3 - 我可以声明需要 "some implementation of api xy"吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20902441/

相关文章:

java - EJB 无法更新数据模型

java - Selenium 测试NG : How can I run selenium tests from a compiled jar using TestNG?

Java/Android 良好的 XML 读取 API

jenkins - maven 多模块 pom 和 jenkins 作业

scala - 使用 Java 和 Scala 源代码打包 WAR

java - 线程 "main"java.lang.NoClassDefFoundError 中出现异常(Maven 项目)

java - 如何设置JDesktopPane大小

java - Java中Collection复制函数的工作原理

api - aws api网关和lambda : multiple endpoint/functions vs single endpoint

json - 当 NODE_ENV=production 时忽略错误处理程序