我在将适当的maven依赖项合并到我的吊索模型项目时遇到了一些问题。
当我部署我的捆绑包时,我得到以下无法解决的导入:
org.apache.sling.models.annotations,version = [1.1,2) - 无法解析
我相信我已将此包含在以下依赖项中:
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.models.api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.models.impl</artifactId>
</dependency>
我尝试使用:
<Embed-Transitive>true</Embed-Transitive>
<Import-Package>*</Import-Package>
在我的捆绑编译说明中,但这导致大量其他依赖关系未得到解决。
当然,我已经走到了这里的花园小径。任何帮助将不胜感激。
答案 0 :(得分:1)
org.apache.sling.models.api V1.0.2
捆绑包会导出以下包:
javax.inject,version=0.0.0
org.apache.sling.models.annotations,version=1.1.0
org.apache.sling.models.annotations.injectorspecific,version=1.0.0
org.apache.sling.models.spi,version=1.0.0
org.apache.sling.models.spi.injectorspecific,version=1.0.0
因此,如果该捆绑包在您的Sling实例中处于活动状态,则org.apache.sling.models.annotations,version=[1.1,2)
导入应该解析。
请注意,在maven依赖项中添加bundle可能不足以在正在运行的实例中安装它们,重要的是models.api包是否处于活动状态,如/system/console/bundles
所示
答案 1 :(得分:1)
使用Embed-Transitive
几乎总是一个糟糕的主意。它遍历Maven中的整个传递依赖层次结构,并将每个JAR拉入您自己的JAR中。因此,您将继承所有拖入的垃圾的所有包依赖关系。
当你有一个像你这样需要导入的软件包时 - 在这种情况下org.apache.sling.models.annotations
- 最好的解决方案是找到另一个已经可用的软件包导出同一个软件包。