与“ejb”和“jar”相同的依赖 - 会发生什么?

时间:2017-02-15 13:21:42

标签: java maven dependency-management

Maven中的依赖关系有一个type元素,默认为jar,但可以设置为ejbwarear等。 ejb是一种特殊情况,因为它不会导致不同的文件结尾:ejb仍然有结尾.jar

我有一个ear项目,其中相同的依赖项使用类型ejb引用一次,使用类型jar引用一次(在传递依赖关系树中)。两个条目都要求使用不同的Maven“坐标”来生成相同的文件。

从enforcer插件的dependencyConvergence规则的角度来看,两个依赖关系似乎都是不同 - <type>jar依赖关系的版本似乎不是由dependencyManagement管理的。然而,只有一个依赖关系进入ear - 即<type>ejb

Maven什么时候“放弃”第二个依赖,我该怎么做才能影响这个?

请注意:我知道您的依赖列表中不应该ejbjar,但如果我杀了负责任的开发人员,我可能会入狱。

1 个答案:

答案 0 :(得分:1)

我在Eclipse中创建了两个示例项目:一个EAR,一个EJB。

如果EAR的POM中的订单是:

<dependency>
  ...
  <type>jar</type>

<dependency>
  ...
  <type>ejb</type>

ejb.jar仅发送到.ear&#39; /lib

如果EAR的POM中的订单是:

<dependency>
  ...
  <type>ejb</type>

<dependency>
  ...
  <type>jar</type>

ejb.jar放到.ear的根和/lib

显然,POM中的申报顺序很少见。

顺便说一句,只是为了说清楚:你的&#34; 使用不同的Maven&#39;坐标&#39; [...] >&#34;是矛盾的。 Maven coordinatesgroupIdartifactIdversion(GAV),而不是packaging和/或classifier,因为后两者不是Double。 t指定&#34; Where?&#34;但是&#34;什么?&#34;。这可能是你引用&#34;坐标&#34;。

的原因