2014-01-09 47 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>