2010-05-19 46 views
4

出於某種原因,我似乎無法解決使用url解析器指定存儲庫位置時依賴關係的依賴關係。但是,使用ibiblio解析器時,我可以檢索它們。常春藤的url解析器支持傳遞檢索嗎?

例如:

<!-- Ivy File --> 
<ivy-module version="1.0"> 
<info organisation="org.apache" module="chained-resolvers"/> 
<dependencies> 
    <dependency org="commons-lang" name="commons-lang" rev="2.0" conf="default"/> 
    <dependency org="checkstyle" name="checkstyle" rev="5.0"/> 
</dependencies> 
</ivy-module> 


<!-- ivysettings file --> 
<ivysettings> 
<settings defaultResolver="chained"/> 
    <resolvers> 
    <chain name="chained"> 
     <url name="custom-repo"> 
     <ivy pattern="http://my.internal.domain.name/ivy/[organisation]/[module]/[revision]/ivy-[revision].xml"/> 
     <artifact pattern="http://my.internal.domain.name/ivy/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/> 
     </url> 
     <url name="ibiblio-mirror" m2compatible="true"> 
     <artifact pattern="http://mirrors.ibiblio.org/pub/mirrors/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
     </url> 
     <ibiblio name="ibiblio" m2compatible="true"/> 
    </chain> 
    </resolvers> 
</ivysettings> 


<!-- checkstyle ivy.xml file generated from pom via ivy:install task --> 
    <?xml version="1.0" encoding="UTF-8"?> 
<ivy-module version="1.0" xmlns:m="http://ant.apache.org/ivy/maven"> 
    <info organisation="checkstyle" 
     module="checkstyle" 
     revision="5.0" 
     status="release" 
     publication="20090509202448" 
     namespace="maven2" 
    > 
     <license name="GNU Lesser General Public License" url="http://www.gnu.org/licenses/lgpl.txt" /> 
     <description homepage="http://checkstyle.sourceforge.net/"> 
     Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard 
     </description> 
    </info> 
    <configurations> 
     <conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf" extends="runtime,master"/> 
     <conf name="master" visibility="public" description="contains only the artifact published by this module itself, with no transitive dependencies"/> 
     <conf name="compile" visibility="public" description="this is the default scope, used if none is specified. Compile dependencies are available in all classpaths."/> 
     <conf name="provided" visibility="public" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/> 
     <conf name="runtime" visibility="public" description="this scope indicates that the dependency is not required for compilation, but is for execution. It is in the runtime and test classpaths, but not the compile classpath." extends="compile"/> 
     <conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases." extends="runtime"/> 
     <conf name="system" visibility="public" description="this scope is similar to provided except that you have to provide the JAR which contains it explicitly. The artifact is always available and is not looked up in a repository."/> 
     <conf name="sources" visibility="public" description="this configuration contains the source artifact of this module, if any."/> 
     <conf name="javadoc" visibility="public" description="this configuration contains the javadoc artifact of this module, if any."/> 
     <conf name="optional" visibility="public" description="contains all optional dependencies"/> 
    </configurations> 
    <publications> 
     <artifact name="checkstyle" type="jar" ext="jar" conf="master"/> 
    </publications> 
    <dependencies> 
     <dependency org="antlr" name="antlr" rev="2.7.6" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
     <dependency org="apache" name="commons-beanutils-core" rev="1.7.0" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
     <dependency org="apache" name="commons-cli" rev="1.0" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
     <dependency org="apache" name="commons-logging" rev="1.0.3" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
     <dependency org="com.google.collections" name="google-collections" rev="0.9" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
    </dependencies> 
</ivy-module> 

使用「ibiblio上」解析器我沒有問題,我解決項目的兩個依賴(公共琅2.0和5.0的CheckStyle)和CheckStyle的的依賴。但是,當試圖完全使用「custom-repo」或「ibiblio-mirror」解析器時,我能夠解析我的項目的兩個明確定義的依賴關係,但不能解決checkstyle的依賴關係。

這可能嗎?任何幫助將不勝感激。

回答

2

原因是你沒有爲你的'ibibio-mirror'解析器指定常春藤模式。你的鏡子應該像財產以後(不要忘了[分類]標記):

<url name="ibiblio-mirror" m2compatible="true"> 
    <ivy pattern="http://mirrors.ibiblio.org/pub/mirrors/maven2/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" /> 
    <artifact pattern="http://mirrors.ibiblio.org/pub/mirrors/maven2/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" /> 
    </url> 

但你也可以使用ibiblio上解析爲您的鏡子:

<ibiblio name="ibiblio-mirror" root="http://mirrors.ibiblio.org/pub/mirrors/maven2/" m2compatible="true"/> 

馬騰

+0

馬騰,感謝您的回覆,但您的第一個解決方案似乎不起作用,因爲只有我在ivy.xml中列出的兩個依賴項正在解決。 但是,使用帶有自定義根的ibiblio解析器部分工作。我說部分原因是因爲當我在模式屬性中指定新的模式佈局時,Ivy似乎忽略它並繼續使用其默認模式。有任何想法嗎? 這是我想要的解析器: Sean 2010-05-20 16:06:22

+0

關於您的自定義ibiblio模式的問題,您可以再次嘗試使用常春藤中繼版本嗎?您可能會遇到此處報告的問題:https://issues.apache.org/jira/browse/IVY-1124。 – 2010-05-20 21:07:53