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

Posted

技术标签:

【中文标题】如何修复在番石榴错误中找不到的配置【英文标题】:how to fix configuration not found in guava error 【发布时间】:2014-10-19 18:35:12 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您的 ivy 配置文件无效(“解析器”不是“解析”)。此外,如果 jar 文件的文件名中不包含版本,您将遇到依赖版本控制问题。

我的建议是使用以下 ivy 配置文件:

<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 检索,第二个将从您的本地文件系统检索。

有关此方法的更多示例,请参阅以下答案:

IVY Build, how do I use an extlib directory in the project? Ivy dependency management for legacy repository

希望这会有所帮助。

【讨论】:

我应该把 放在设置文件还是 ivyconf 中?在书中,ant in action,它说如果你做本地项目,你应该创建 ivyconf 而不是设置。我有一点疑惑?如果我写了 ivyconf.xml,我是否应该写一些语句让 ivy.xml 知道 ivyconf.xml 已创建并存储在其中? 即使 ivyde 也会出现同样的错误;我的 ivy.xml 错了吗? 我很无聊,请原谅我。最后一个问题,我必须实现设置文件吗? @Hevan 不要以为我理解你的问题。请查看我的第二个链接以获取更完整的使用常春藤的示例。就我个人而言,我总是将 build.xml、ivy.xml 和 ivysettings.xml 文件放在项目的根目录中。简单得多,并且是 ivy 的默认设置。【参考方案2】:

我确定我的 ivy 配置是正确的,但我仍然不断收到错误消息。我不知道是怎么回事,但我的 IVY 缓存被搞砸了。清除缓存(我使用 rm -rf)并再次运行构建。

【讨论】:

以上是关于如何修复在番石榴错误中找不到的配置的主要内容,如果未能解决你的问题,请参考以下文章

如何修复错误在 Angular 2 clickeditor 中找不到名称“对象”

如何修复错误 ITMS-90032:“无效的图像路径 - 在键 'CFBundleIcons' 下引用的路径中找不到图像:'AppIcon60x60'”?

如何在带有 nvm 的 MacO 上使用 Husky 和 ​​SourceTree 修复这些错误? “在 PATH 中找不到节点”和“当前目录不是 git 目录!”

如何修复 Xcode 中找不到的“firebase_auth/FirebaseAuthPlugin.h”文件?

如何修复“在当前项目和插件组中找不到前缀'liquibase'的插件”

不变违规:requireNativeComponent:在 UIManager 中找不到“AIRMap”。没有修复?