我正在尝试使用 ivy 在我的项目中包含 jersey-servlet。我的依赖看起来像这样:
<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] ::::::::::::::::::::::::::::::::::::::::::::::
我的研究告诉我weld-spi/api 1.1.4.Final不存在。看起来这些是weld-osgi-bundle-1.1.4.Final.jar 的依赖项。但是,如果您打开那个 jar 并在 META-INF 目录中四处寻找,就会发现确实存在对weld-spi/api 1.1.Final的引用。
另外,在 maven 存储库中,weld-osgi-bundle 1.1.4.Final 的依赖关系表在版本列中没有显示任何内容。
是不是 ivy 的所有依赖项都默认使用 1.1.4.Final 版本的weld-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"
/>