常春藤2.3无法解析球衣-的servlet 1.13依赖(或1.11,或1.12)(ivy 2.3

2019-09-20 10:24发布

我想包括在使用常春藤我的项目的球衣小服务程序。 我的依赖关系是这样的:

<dependency org="com.sun.jersey"    name="jersey-servlet"   rev="${jersey.version}"/>

...但我遇到了一些未解决的依赖:

[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 / API 1.1.4.Final不存在。 它看起来像这些都是焊接OSGi的捆绑,1.1.4.Final.jar的依赖。 但是,如果你打开罐子,挖周围的META-INF目录中,有引用焊接-SPI / API 1.1.Final,它确实存在。

另外,在Maven仓库,用于焊接的OSGi包1.1.4.Final依赖关系表显示没有在版本列。

难道常春藤默认到焊接OSGi的捆绑其所有依赖的1.1.4.Final版本,而行家知道哪里可以找到的依赖关系的正确版本?

有没有解决的办法了常春藤?

==>与现在工作的ivy.xml更新的基础上,Eyads评论:

的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回购闯过MOXY依赖性:

<ibiblio
name="eclipselink"
m2compatible="true"
root="http://download.eclipse.org/rt/eclipselink/maven.repo"
/>

Answer 1:

尝试包括你想要的版本在依赖标签“力=真正的”这种依赖性。 我不知道如果我得到它完全正确的,但这个最后的依赖并没有明确在你的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.Final的修订。 我们来看看其原因,是在Maven的POM,他们有他们的父母依赖性的“进口”标签,它依赖于另一个父POM(简而言之)。

所以,常春藤不知道如何处理它,它使用当前版本1.1.8.Final而不是声明1.1.Final的API和SPI的一个。

你要么解决IVY,并从缓存中删除一个文件夹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"/>

正上方原有的依赖。

如果你把它之后它仍然无法覆盖的版本。



Answer 2:

这是一个错误https://issues.apache.org/jira/browse/IVY-1376 。 因此,一个解决方案可以是:等待修复和投票的错误了,而等待。



文章来源: ivy 2.3 can't resolve dependencies for jersey-servlet 1.13 (or 1.11, or 1.12)