我正在尝试使用常春藤在我的项目中包括jersey-servlet。我的依赖性如下:
<dependency org="com.sun.jersey" name="jersey-servlet" rev="${jersey.version}"/>
...but遇到了一些未解决的依赖关系:
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: UNRESOLVED DEPENDENCIES ::
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: org.eclipse.persistence#org.eclipse.persistence.moxy;2.3.2: not found
[ivy:resolve] :: org.jboss.spec.javax.interceptor#jboss-interceptors-api_1.1_spec;${interceptor.api.version}: not found
[ivy:resolve] :: javax.inject#javax.inject;${atinject.api.version}: not found
[ivy:resolve] :: org.jboss.weld#weld-api;1.1.4.Final: not found
[ivy:resolve] :: org.jboss.weld#weld-spi;1.1.4.Final: not found
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
我的研究告诉我焊接-spi/api1.1.4最终不存在。看起来,这些都是焊缝-osgi-bundle-1.1.4.final.jar的依赖项。但是,如果您打开这个jar并在META目录中进行挖掘,就会有对沃尔-SPI/api 1.1.Final的引用,它们确实存在。
另外,在maven存储库中,用于焊缝-osgi-bundle 1.1.4的依赖关系表在version列中没有显示任何内容。
可能是因为常春藤默认为1.1.4。对于所有的依赖项,最终版本的焊缝-osgi-bundle都是默认的,而maven知道在哪里找到依赖项的正确版本吗?
有办法和常春藤绕道吗?
基于Eyads评论的==>更新现在正在工作的ivy.xml:
ivy.xml有以下依赖关系:
<dependency org="com.sun.jersey" name="jersey-servlet" rev="${jersey.version}" transitive="false"/>
<dependency org="org.jboss.weld" name="weld-api" rev="1.1.Final" force="true"/>
注意,我还需要添加eclipselink repo以通过moxy依赖:
<ibiblio
name="eclipselink"
m2compatible="true"
root="http://download.eclipse.org/rt/eclipselink/maven.repo"
/>
发布于 2012-07-29 21:25:57
尝试将该依赖包含在依赖标记中的“force=true”中所需的版本中。我不确定我是否完全正确,但是最后一个依赖项没有在您的ivy.xml文件中显式声明,因此您可以显式地将它添加到您所拥有的文件中,即:
<dependency org="com.sun.jersey" name="jersey-servlet" rev="${jersey.version}" transitive="false" />
注意相依标记中的传递属性。
这将防止它带来它想要的依赖项(显然是焊缝api)。
==============
更新:
我们公司现在也有同样的问题,但原因不同。我们试图加入另一种依赖
<dependency org="org.jboss.weld.se" name="weld-se-core" rev="1.1.8.Final" />
这将尝试检索焊接-api和焊接-spi的修订1.1.8最后。我们看到的原因是,在maven pom中,它们对父依赖项有一个"import“标记,它依赖于另一个父pom (简而言之)。
所以Ivy不知道如何处理它,它使用当前版本1.1.8 for,而不是为api和spi声明1.1.Final的版本。
您可以解析常春藤并从缓存中删除一个文件夹org.jboss.weld.se,但将org.jboss.weld保存在缓存中,然后再解析。
或者你可以加上这些:
<dependency org="org.jboss.weld" name="weld-spi" rev="1.1.Final" force="true"/>
<dependency org="org.jboss.weld" name="weld-api" rev="1.1.Final" force="true"/>
就在原始依赖的上方。
如果将其放在后面,它仍然无法覆盖该版本。
发布于 2012-11-23 09:51:32
是个窃听器https://issues.apache.org/jira/browse/IVY-1376。因此,解决方案可以是:等待修复程序,并在等待时对错误进行表决。
https://stackoverflow.com/questions/11712720
复制相似问题