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