如何修复番石榴错误中找不到的配置

时间:2014-08-26 12:23:11

标签: java xml ant guava ivy

我试图解决本地文件系统的依赖关系;为此,我编写了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>

2 个答案:

答案 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)并再次运行构建。