首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ivy 2.3无法解决jersey-servlet 1.13 (或1.11或1.12)的依赖关系

ivy 2.3无法解决jersey-servlet 1.13 (或1.11或1.12)的依赖关系
EN

Stack Overflow用户
提问于 2012-07-29 20:36:24
回答 2查看 1.7K关注 0票数 2

我正在尝试使用常春藤在我的项目中包括jersey-servlet。我的依赖性如下:

代码语言:javascript
运行
复制
<dependency org="com.sun.jersey"    name="jersey-servlet"   rev="${jersey.version}"/>

...but遇到了一些未解决的依赖关系:

代码语言:javascript
运行
复制
[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有以下依赖关系:

代码语言:javascript
运行
复制
<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依赖:

代码语言:javascript
运行
复制
<ibiblio
name="eclipselink"
m2compatible="true"
root="http://download.eclipse.org/rt/eclipselink/maven.repo"
/>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-29 21:25:57

尝试将该依赖包含在依赖标记中的“force=true”中所需的版本中。我不确定我是否完全正确,但是最后一个依赖项没有在您的ivy.xml文件中显式声明,因此您可以显式地将它添加到您所拥有的文件中,即:

代码语言:javascript
运行
复制
<dependency org="com.sun.jersey"    name="jersey-servlet"   rev="${jersey.version}" transitive="false" />

注意相依标记中的传递属性。

这将防止它带来它想要的依赖项(显然是焊缝api)。

==============

更新:

我们公司现在也有同样的问题,但原因不同。我们试图加入另一种依赖

代码语言:javascript
运行
复制
<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保存在缓存中,然后再解析。

或者你可以加上这些:

代码语言:javascript
运行
复制
<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"/>

就在原始依赖的上方。

如果将其放在后面,它仍然无法覆盖该版本。

票数 2
EN

Stack Overflow用户

发布于 2012-11-23 09:51:32

是个窃听器https://issues.apache.org/jira/browse/IVY-1376。因此,解决方案可以是:等待修复程序,并在等待时对错误进行表决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11712720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档