我试图解决本地文件系统的依赖关系;为此,我编写了ivy.xml,ivyconf.xml和build.xml。但是,我的脚本没有工作,无法解决依赖关系,即无法找到jar文件。它背后的问题是什么?而且,我该如何解决呢?
错误
Error
[ivy:resolve] com.google.guava#guava;17.0: configuration not found in
com.google.guava#guava;17.0: 'public'. It was required from
.. runtime
项目层次结构
project
| - - src
| - - lib
| - - guava.jar
| - - conf
| - - ant
| - - build.xml
| - - ivy
| - - ivy.xml
| - - ivyconf.xml
ivy.xml文件
<ivy-module version="2.0">
<configurations defaultconfmapping="runtime->public">
<conf name="compile" visibility="private"/>
<conf name="jar"
extends="compile"
visibility="private"/>
<conf name="runtime"
extends="jar"
visibility="public"/>
</configurations>
<dependencies>
<dependency org="com.google.guava" name="guava" rev="17.0" conf="runtime->public"/>
</dependencies>
</ivy-module>
最后,ivyconf.xml
<conf defaultresolver="local"/>
<resolves>
<filesystem name="local">
<artifact pattern="${lib.dir}/**/*.jar" />
</filesystem>
</resolves>
答案 0 :(得分:0)
您的常春藤配置文件无效(“解析器”无法“解析”)。此外,如果jar文件不包含文件名中的版本,那么您将遇到依赖版本控制问题。
我的建议是使用以下常春藤配置文件:
<ivysettings>
<settings defaultResolver='central' />
<resolvers>
<ibiblio name='central' m2compatible='true'/>
<filesystem name='local'>
<artifact pattern='${ivy.settings.dir}/../../lib/[artifact]' />
</filesystem>
</resolvers>
<modules>
<module organisation='NA' resolver='local' />
</modules>
</ivysettings>
然后,您可以选择声明依赖关系,如下所示:
<dependency org="com.google.guava" name="guava" rev="17.0" />
<dependency org="NA" name="guava" rev="NA" conf="runtime->default"/>
第一个将从Maven central repository检索,第二个将从您的本地文件系统中检索。
有关此方法的更多示例,请参阅以下答案:
希望这有帮助。
答案 1 :(得分:0)
我确信我的常春藤配置是正确的,我仍然不断收到错误。我不知道怎么,但我的IVY缓存搞砸了。清除缓存(我使用rm -rf)并再次运行构建。