常春藤未能解决

时间:2014-01-09 15:56:44

标签: java ivy

我是Ivy的新手,所以这可能已经被覆盖了,但我不知道知道。我的搜索结果空洞,以找到类似的经历。

因此,当我第一次下拉整个项目并更新库引用时,我有时会得到一个未解析的依赖项警告。它似乎在随机库上。

例如,我刚刚将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,一切正常。每次更新或添加库时,我需要做些什么才能避免这种情况发生?

1 个答案:

答案 0 :(得分: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>