2014-01-09 253 views
3

我是新來的常春藤,所以這可能已經被覆蓋,但我不知道足夠的知道。我的搜索空了,找到類似的經歷。常春藤未能解決

因此,當我第一次拉下整個項目並更新庫引用時,我有時會得到未解決的依賴關係警告。它看似隨機圖書館。

例如,我只是將commons-codec-1.9添加到某個項目中,而工作集中的其他項目使用1.6和1.7。當運行隆重構建腳本,所有的突然爲1.6和1.7的「配置[是]未找到」:

:::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:resolve]  ::   UNRESOLVED DEPENDENCIES   :: 
[ivy:resolve]  :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:resolve]  :: commons-codec#commons-codec;1.6: configuration not found in commons-codec#commons-codec;1.6: 'runtime'. It was required from org.apache.httpcomponents#httpclient;4.2.2 compile 
[ivy:resolve]  :: commons-codec#commons-codec;1.7: configuration not found in commons-codec#commons-codec;1.7: 'runtime'. It was required from org.apache.solr#solr-core;4.0.0 compile 
[ivy:resolve]  :::::::::::::::::::::::::::::::::::::::::::::: 

現在,我不能完全肯定這意味着什麼。我所知道的是,在我的常青藤緩存(C:\Users\me\.ivy2\cache\commons-codec\commons-codec)中,ivy-1.6.xml和ivy-1.7.xml文件比解析的小得多。例如,ivy-1.6.xml

<?xml version="1.0" encoding="UTF-8"?> 
<ivy-module version="2.0"> 
    <info organisation="commons-codec" 
     module="commons-codec" 
     revision="1.6" 
     status="release" 
     publication="20140107114252" 
     default="true" 
    /> 
    <configurations> 
     <conf name="default" visibility="public"/> 
    </configurations> 
    <publications> 
     <artifact name="commons-codec" type="jar" ext="jar" conf="default"/> 
    </publications> 
</ivy-module> 

然而這並解決任何其他神器擁有得多,在它的更多信息。

問題在於我可以從其緩存中複製另一個開發人員的ivy-x.y.xml,然後它正確下載JAR,並且一切正常。每次更新或添加庫時,我需要做些什麼纔不會發生這種情況?

+0

它也可能會發生你的依賴有依賴其無法得到解決。 – Prince

+0

[Ivy解決一些用戶失敗的可能的重複](http://stackoverflow.com/questions/20660333/ivy-resolve-failing-for-some-users) – Nick

回答

2

我懷疑你的緩存是陳舊的。如果您對常春藤或ivysettings文件進行了大量更改,就會發生這種情況。

我建議增加,你可以用定期迫使你的項目依賴的新鮮下載額外的目標:

<target name="clean" description="Cleanup build files"> 
    <delete dir="${build.dir}"/> 
</target> 

<target name="clean-all" depends="clean" description="Additionally purge ivy cache"> 
    <ivy:cleancache/> 
</target>