Maven中的依赖关系:type ejb的影响是什么?

4
如果在Maven中声明依赖关系,您可以添加一个类型,比如war、jar、ejb等。我知道使用ejb类型编译项目与使用jar类型编译项目不同,因为它会触发不同的生命周期。但是,在声明依赖关系方面有什么区别呢?看起来Maven dependency type ejb vs jar提出了同样的问题,但是被接受的答案对我来说很奇怪。我怀疑依赖关系中的类型可以触发生命周期。实际上,我期望ejb类型和jar类型完全相同。有人能够解释一下吗?

1
也许还可以加入更多的想法,但是是的,它们应该以完全相同的方式运行,只有为了“文档”目的而不同(例如查看maven-aether-provider源代码)。当您拥有一个打包EJB的项目时,即<packaging>ejb</packaging>,而不是对EJB的依赖关系时,会启动不同的生命周期。 - Tunaki
您所链接的主题中没有被接受的答案。 - Chris311
1个回答

0
我怀疑依赖中的类型是否能触发生命周期。
你并不是唯一一个怀疑的人。
当你使用ejb类型声明依赖时,你可以享受到Maven提供的与ejb相关的一些便利,例如:
  • application.xml中添加EJB声明的能力。自Java EE 5以来,这已经不再需要了。

  • 检查依赖项是否为EJB而不是简单的JAR。

  • 可能还有其他一些小事情。

如果你使用jar type声明依赖,就无法享受这些便利。
正如你所注意到的,这并没有改变很多东西,但无论哪种情况,都是使用相同的JAR作为依赖项。

你不需要引用ejb-client类型,但它通常更有趣,因为与依赖于相同jar的jarejb类型的情况相反,当你在依赖项中声明ejb-client类型时,你依赖于一个不同的jar,因为这个jar应该只包含调用ejb的API类。
当然,如果我们想要我们的ejbejb-client版本,我们必须在产生ejb的工件中指定它。


1
在 JBoss EAP 7 中,我注意到依赖注入可能需要 ejb 打包类型。JBoss 在打包为 jar 的模块(或外部 jar 依赖项)中找不到 EJB(即 Singleton)。它需要 package-ejb 和依赖类型 ejb 才能正常工作。 - Merijn Vogel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接