如果在Maven中声明依赖关系,您可以添加一个类型,比如war、jar、ejb等。我知道使用ejb类型编译项目与使用jar类型编译项目不同,因为它会触发不同的生命周期。但是,在声明依赖关系方面有什么区别呢?看起来Maven dependency type ejb vs jar提出了同样的问题,但是被接受的答案对我来说很奇怪。我怀疑依赖关系中的类型可以触发生命周期。实际上,我期望ejb类型和jar类型完全相同。有人能够解释一下吗?
ejb
类型声明依赖时,你可以享受到Maven提供的与ejb
相关的一些便利,例如:
在application.xml
中添加EJB声明的能力。自Java EE 5以来,这已经不再需要了。
检查依赖项是否为EJB而不是简单的JAR。
可能还有其他一些小事情。
type
声明依赖,就无法享受这些便利。你不需要引用ejb-client
类型,但它通常更有趣,因为与依赖于相同jar的jar
或ejb
类型的情况相反,当你在依赖项中声明ejb-client
类型时,你依赖于一个不同的jar,因为这个jar应该只包含调用ejb
的API类。
当然,如果我们想要我们的ejb
的ejb-client
版本,我们必须在产生ejb
的工件中指定它。
<packaging>ejb</packaging>
,而不是对EJB的依赖关系时,会启动不同的生命周期。 - Tunaki