2012-02-21 45 views
0

我得到这个错误,当我尝试使用常春藤Eclipse插件JRuby中添加作为一个依赖:的Eclipse插件常春藤说JRuby中有一个未解决的依赖,但JRuby的1.6.6没有任何

Impossible to resolve dependencies of com.restphone#;[email protected] 
unresolved dependency: org.jruby.extras#bytelist;1.0.8: not found 

这是我的ivy.xml:

<dependency org="org.jruby" 
    name="jruby-complete" 
    rev="1.6.6" /> 

这是ivysettings.xml:

<ivysettings> 
    <settings defaultResolver="chain"/> 
    <resolvers> 
     <chain name="chain"> 
      <ibiblio name="codehaus" m2compatible="true" root="http://repository.codehaus.org/"/> 
     </chain> 
    </resolvers> 
</ivysettings> 

但根据JRU通过邮件列表,jruby has NO dependencies for runtime, compile or test scope

我需要给某个地方的常青藤插件更多的信息吗?

回答

1

在我看来,为你的依赖指定一个配置映射总是一个好主意。

下面的ivy文件对我来说工作得很好。如前所述,只有红宝石罐被下载。

<ivy-module version="2.0"> 
    <info organisation="org.demo" module="demo"/> 
    <configurations> 
     <conf name="compile"/> 
     <conf name="runtime" extends="compile"/> 
     <conf name="test" extends="runtime"/> 
    </configurations> 
    <dependencies> 
     <dependency org="org.jruby" name="jruby-complete" rev="1.6.6" conf="compile->default"/> 
    </dependencies> 
</ivy-module> 

在这里,我映射我的地方“编译”配置默认的远程配置。 (在Maven模块中,默认的ivy配置转换为“编译”范围)。


我挖成remote POM file

<properties> 
    <jar.scope>provided</jar.scope> 
    .. 
    .. 

    <dependency> 
     <groupId>org.jruby.joni</groupId> 
     <artifactId>joni</artifactId> 
     <scope>${jar.scope}</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.jruby.extras</groupId> 
     <artifactId>jnr-netdb</artifactId> 
     <scope>${jar.scope}</scope> 
    </dependency> 
    ... 

所有的额外depedencies已在 “规定” Maven的范围被宣布。

几个问题:

1) 在Maven中所提供的范围是用于罐所需要用于编译模块。它们不需要打包,因为它们是目标运行时环境的一部分。类似的,这样的依赖不需要作为你的模块的传递依赖,因此不需要下载。

2) 所有的瓶子都位于Maven中央存储库中。下面的设置文件将检索的一切,如果你选择了忽略常春藤配置映射

<ivysettings> 
    <property name="ivy.checksums" value=""/> 
    <settings defaultResolver="chain"/> 
    <resolvers> 
     <chain name="chain"> 
      <ibiblio name="central" m2compatible="true"/> 
     </chain> 
    </resolvers> 
</ivysettings> 

3) 下面的错误是由垃圾校验引起的。我提供的设置文件禁用此检查...你的东西尽量不要在远程存储库

[ivy:resolve] :::: WARNINGS 
[ivy:resolve] problem while downloading module descriptor: http://repo1.maven.org/maven2/org/jruby/extras/bytelist/1.0.8/bytelist-1.0.8.pom: invalid sha1: expected=e40ee094403473e43f71e21cf9cbf71f08d2098b computed=a9627bc7e42f886e290985367040794adb676320 (977ms) 
[ivy:resolve]  module not found: org.jruby.extras#bytelist;1.0.8 
+0

谢谢,我把这个信息放在jruby邮件列表中。 – 2012-02-28 05:22:21

1

虽然JRuby的文档可能不在状态所需的相关项,它看起来好像库您正在使用不...

你问“JRuby的完整的”,如果你去看看这个POM你会看到它指定的jruby演员。

一种选择是选择一个不同的POM文件作为您的依赖关系的基础,但一个快速解决方案是将属性transitive =“false”添加到您的依赖项。

<dependency org="org.jruby" 
    name="jruby-complete" 
    transitive="false" 
    rev="1.6.6" /> 
+0

做的不是从http://repository.codehaus.org/org/jruby/jruby-complete/的 org.jruby.extras节1.6.6/jruby-complete-1.6.6.pom指定jar本身提供jruby-extras? – 2012-02-22 19:07:15

相关问题