Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven3-我可以申报吗;api xy的一些实现;需要_Java_Api_Maven 3 - Fatal编程技术网

Java Maven3-我可以申报吗;api xy的一些实现;需要

Java Maven3-我可以申报吗;api xy的一些实现;需要,java,api,maven-3,Java,Api,Maven 3,我经常把我的项目分成多个模块的项目 我如何在Maven 3 POM中声明“API xy的某些实现必须在包中可用” 例如,如果我在服务api和服务impl中拆分我的服务层,并在api中声明可部署的服务必须依赖于服务api的实现,即使它不是服务impl模块本身 这是可能的吗?如果您需要一个API的实现,那么有些东西必须选择哪个impl。如果你不在乎哪个,那么你有两个选择: 您可以选择一个impl并在POM中声明它,使用运行时,这将在编译时排除impl,但它将对容器可用 或者使用或实现 引用Oracl

我经常把我的项目分成多个模块的项目

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

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


这是可能的吗?

如果您需要一个API的实现,那么有些东西必须选择哪个impl。如果你不在乎哪个,那么你有两个选择:

  • 您可以选择一个impl并在POM中声明它,使用
    运行时
    ,这将在编译时排除impl,但它将对容器可用
  • 或者使用或实现
  • 引用Oracle教程(重点已添加):

    一组编程接口和类,提供对某些特定应用程序功能或特性的访问。该服务可以定义功能接口和检索实现的方法


    这似乎是OSGi试图解决的问题。这个需求的问题在于,实现往往是在Maven构建环境的上下文中“提供”的。据我所知,API和实现之间的大多数API在运行时解决了这个问题,因此它们手动检查实现是否在类路径上,如果没有,则记录错误。多亏了Rekin和Gimby。我担心maven在这件事上不会给我任何帮助。