首页 文章

离线/断开连接时解决Apache Ivy依赖关系?

提问于
浏览
12

当脱机/断开连接时,如何让Ivy从本地缓存中解析依赖关系(包括与 changing="true" 的依赖关系)?

我'm working on a Java-based open-source project that uses Apache Ivy to resolve and download 3rd party dependencies. The project' s build.xml 有一个名为 resolve 的 Ant 目标下载常 Spring 藤(如果需要),然后使用常 Spring 藤来检索所需的 jar .

在线时一切都很棒 . 但是,如果没有Internet访问,即使所需的jar文件位于本地Ivy缓存( ~/.ivy2/cache )中,_1603402也会失败 . 似乎Ivy正在尝试连接到Maven存储库以刷新 changing="true" 依赖项 .

我得到的错误类似于以下内容:

[ivy:retrieve] You probably access the destination server through a proxy server that is not well configured.
[ivy:retrieve] You probably access the destination server through a proxy server that is not well configured.
[ivy:retrieve] 
[ivy:retrieve] :: problems summary ::
[ivy:retrieve] :::: WARNINGS
[ivy:retrieve]  Host repo.example.com not found. url=http://repo.example.com/exampleorg/examplename/examplerev/ivys/ivy.xml
[ivy:retrieve]  Host repo.example.com not found. url=http://repo.example.com/exampleorg/examplename/examplerev/jars/examplename.jar
[ivy:retrieve]          module not found: exampleorg#examplename;examplerev
[ivy:retrieve]  ==== local: tried
[ivy:retrieve]    ~/.ivy2/local/exampleorg/examplename/examplerev/ivys/ivy.xml
[ivy:retrieve]    -- artifact exampleorg#examplename;examplerev!examplename.jar:
[ivy:retrieve]    ~/.ivy2/local/exampleorg/examplename/examplerev/jars/examplename.jar
[ivy:retrieve]  ==== shared: tried
[ivy:retrieve]    ~/.ivy2/shared/exampleorg/examplename/examplerev/ivys/ivy.xml
[ivy:retrieve]    -- artifact exampleorg#examplename;examplerev!examplename.jar:
[ivy:retrieve]    ~/.ivy2/shared/exampleorg/examplename/examplerev/jars/examplename.jar
[ivy:retrieve]  ==== repo: tried
[ivy:retrieve]    http://repo.example.com/exampleorg/examplename/examplerev/ivys/ivy.xml
[ivy:retrieve]    -- artifact exampleorg#examplename;examplerev!examplename.jar:
[ivy:retrieve]    http://repo.example.com/exampleorg/examplename/examplerev/jars/examplename.jar
[ivy:retrieve]          ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]          ::          UNRESOLVED DEPENDENCIES         ::
[ivy:retrieve]          ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]          :: exampleorg#examplename;examplerev: not found
[ivy:retrieve]          ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] 
[ivy:retrieve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS

BUILD FAILED
~/exampleproj/build.xml:123: impossible to resolve dependencies:
        resolve failed - see output for details

按警告建议运行 ant -verbose resolve 会在输出中打印以下行:

[ivy:retrieve] don't use cache for exampleorg#examplename;examplerev: changing=true

如何在离线时让Ivy从缓存中解析 changing="true" 依赖关系,但在线时继续查询每个构建的存储库?

1 回答

  • 11

    奥尔斯已回答了这个问题,但这并不明显 .

    尝试从命令行运行构建设置 ivy.cache.ttl.default 属性:

    ant -Divy.cache.ttl.default=eternal build
    

    资料来源:

相关问题