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

JF *_*ier 7 java dependency-management maven

在Maven依赖有一个type默认为元素jar,但可以设置为ejb,war,ear,等的类型ejb是一个特例,因为它不会导致结尾的不同文件:在ejb具有仍结局.jar.

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

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

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

请注意:我知道你不应该在你的依赖列表中有ejbs jar,但如果我杀了负责任的开发人员,我可能会去监狱.

Ger*_*ica 1

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

如果 EAR 的 POM 中的顺序是:

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

<dependency>
  ...
  <type>ejb</type>
Run Code Online (Sandbox Code Playgroud)

ejb.jar放置到.ear唯一/lib

如果 EAR 的 POM 中的顺序是:

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

<dependency>
  ...
  <type>jar</type>
Run Code Online (Sandbox Code Playgroud)

ejb.jar放置到 的 .ear根并且/lib.

显然这是 POM 中声明顺序很重要的罕见情况之一。

顺便说一句,只是为了说清楚:你的“相同的依赖关系被引用[...]不同的 Maven '坐标' ”是矛盾的。Maven 坐标groupId,artifactIdversion(GAV),而不是packaging和/或classifier,因为后两者没有指定“Where?” 但“什么?”。这可能就是您引用“坐标”的原因。