常春藤没有解决来自公共maven回购的传递依赖

时间:2012-08-30 20:02:40

标签: java eclipse maven ivy transitive-dependency

考虑以下常春藤依赖项,

<dependency org="org.fusesource.restygwt" name="restygwt" rev="1.3"
 conf="gwtcompile->default; compile->default"/>

<dependency org="org.jboss.resteasy" name="resteasy-jaxrs" rev="2.3.4.Final"
 conf="compile->compile(*),runtime(*);runtime->runtime(*)"/>

他们依赖于

镜像的公共maven repos
  

http:// myivyserver:8888 / mirrored /。

由ivysettings解析器指定链接到...

<url name="mirrored" m2compatible="true">
  <artifact
    pattern="http://myivyserver:8888/mirrored/${maven2.artifact.pattern}" />
</url>

我可以看到镜像目录完全复制了远程maven repos的文物。

我习惯了Maven,看到eclipse上的buildpath显示了maven依赖。

现在,我正在为项目创建Ivy依赖项。我期待看到类似的,我确实看到,一个类似的Ivy依赖节点显示了Ivy eclipse插件所有的jar。

但是,eclipse buildpath中的Ivy依赖节点不会显示镜像poms传递的任何jar。

例如,

<dependency org="org.fusesource.restygwt" name="restygwt" rev="1.3"
 conf="gwtcompile->default; compile->default"/>

<dependency org="org.jboss.resteasy" name="resteasy-jaxrs" rev="2.3.4.Final"
 conf="compile->compile(*),runtime(*);runtime->runtime(*)"/>

两个依赖项'pom指定对javax.ws.rs(jsr311-api)的依赖

<dependency>
  <groupId>javax.ws.rs</groupId>
  <artifactId>jsr311-api</artifactId>
  <version>1.1</version>
  <scope>provided</scope>
</dependency>

然而,javax.ws.rs(jsr311-api)并没有出现在常春藤托管项目的构建路径库中,就像Maven管理的那样。

我还需要做些什么来获得ivy插件来解决maven poms引起的传递依赖?

谢谢。

1 个答案:

答案 0 :(得分:1)

URL解析器考虑maven布局但不考虑pom依赖关系。当我实现这个功能时,ibiblio解析器能够解决pom的依赖关系。

http://ant.apache.org/ivy/history/latest-milestone/resolver/ibiblio.html
<ibiblio name="maven2" m2compatible="true" root="http://myivyserver:8888/mirrored">

我没有长时间使用它,因为我更喜欢我的代码中的非传递依赖项,所以我已经完成了使用纯url解析器。