为什么不能实现对Uber jar的传递依赖?

时间:2018-02-15 07:03:11

标签: maven-3 aem transitive-dependency uberjar

根据传递依赖的概念,如果一个项目,说它A依赖于X jar并且包含在A&#39的pom.xml中。现在我的第二个项目,说它B依赖于项目A和X jar。所以现在在我的B> pom.xml中,我只在其依赖项中添加项目A,因为X jar由传递依赖的概念由A提供。

但是如果我有一个Uber(阴影)jar而不是X jar,那么当我构建项目B时,它无法说Uber jar中包含的包丢失了。意味着这个概念失败了。

如果我错过任何概念或错过理解传递依赖,请帮助我理解。

1 个答案:

答案 0 :(得分:0)

<scope>依赖项通常设置为provided provided。对于大多数AEM maven依赖项也是如此。

with cteMain as ( select *, row_number() over (partition by Credit_Line_NO order by AsOfDate) as sn from Reporting_Table ) Select m.Credit_Line_NO, sLead.NEXT_PAYMENT_DATE, m.AsOfDate, m.EXPIRY_DATE_REVISED, m.sn, m.FBNK_MONTHS From cteMain as m LEFT OUTER JOIN cteMain AS sLead ON sLead.sn = m.sn+1 LEFT OUTER JOIN cteMain AS sLeg ON sLeg.sn = m.sn-1 ORDER BY m.Credit_Line_NO, m.AsOfDate 个依赖关系传递,请阅读有关传递依赖关系的maven文档:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

在上面的maven doc链接中,请阅读&#34;依赖范围&#34;部分。

来自doc:

  

<强>提供:   这很像compile,但表示您希望JDK或容器在运行时提供依赖性。例如,在为Java Enterprise Edition构建Web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此范围仅在编译和测试类路径中可用,并且不可传递。