Maven中的依赖关系有一个type
元素,默认为jar
,但可以设置为ejb
,war
,ear
等。 ejb
是一种特殊情况,因为它不会导致不同的文件结尾:ejb
仍然有结尾.jar
。
我有一个ear项目,其中相同的依赖项使用类型ejb
引用一次,使用类型jar
引用一次(在传递依赖关系树中)。两个条目都要求使用不同的Maven“坐标”来生成相同的文件。
从enforcer插件的dependencyConvergence
规则的角度来看,两个依赖关系似乎都是不同 - <type>jar
依赖关系的版本似乎不是由dependencyManagement管理的。然而,只有一个依赖关系进入ear
- 即<type>ejb
。
Maven什么时候“放弃”第二个依赖,我该怎么做才能影响这个?
请注意:我知道您的依赖列表中不应该ejb
为jar
,但如果我杀了负责任的开发人员,我可能会入狱。
答案 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 coordinates是groupId
,artifactId
和version
(GAV),而不是packaging
和/或classifier
,因为后两者不是Double
。 t指定&#34; Where?&#34;但是&#34;什么?&#34;。这可能是你引用&#34;坐标&#34;。