我经常大量地将我的项目拆分成多模块项目。
我如何在 Maven 3 POM 中声明“API xy 的某些实现必须在包中可用”。
例如,如果我将服务层拆分为 services-api
和 services-impl
并在 API 中声明可部署项必须依赖于services-api
的实现,即使它不是 services-impl
模块本身。
这可能吗?
最佳答案
如果您需要一个 API 的实现,那么某物 必须选择哪个实现。如果您不关心哪个,那么您有 2 个选择:
- 或者您只需选择一个实现并在 POM 中声明它,使用
<scope>runtime</scope>
,这在编译时排除了 impl,但它将可供容器使用。 - 或者您使用或实现 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/