在我看來,爲你的依賴指定一個配置映射總是一個好主意。
下面的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
謝謝,我把這個信息放在jruby郵件列表中。 – 2012-02-28 05:22:21