【问题标题】:Why does Artifactory require an explicit artifact for some Ivy dependencies为什么 Artifactory 需要针对某些 Ivy 依赖项的显式工件
【发布时间】:2015-12-28 05:31:11
【问题描述】:

我有一个 Artifactory 服务器,用于解决 Ivy 依赖项。当我想向我的ivy.xml 添加依赖项时,有时我必须添加一个显式嵌套的<artifact> 标签,我不明白为什么。

示例 A:

<dependency org="com.google" name="guava" rev="[7,)" conf="compile,runtime" />

示例 B

<dependency org="com.twelvemonkeys.common" name="common-image" rev="3.0.1" conf="compile,runtime">
  <artifact name="common-image" ext="jar"/>
</dependency>

查看 Artifactory 树视图中缓存的依赖项,没有任何迹象表明最后一个示例需要额外的信息来解决依赖项,但 Artifactory 自己提出了建议,并且在没有 out 的情况下无法解决。

我正在对具有 Maven 布局的存储库使用 Ivy。我的设置由 Artifactory 生成,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<ivy-settings>
  <settings defaultResolver="main" />
  <resolvers>
    <chain name="main">
      <ibiblio 
        name="public" 
        m2compatible="true" 
        root="http://example.org/artifactory/remote-repos" />
    </chain>
  </resolvers>
</ivy-settings>

为什么 Artifactory 对于某些 Ivy 依赖项而不是其他依赖项需要显式工件?

编辑 20151005:添加了 Ivy 设置示例

【问题讨论】:

    标签: ivy artifactory


    【解决方案1】:

    执行依赖解析的工具是 Ivy 客户端而不是 Artifactory。 根据依赖减速,Ivy resolver 决定从存储库请求哪个工件(在您的情况下是 Artifactory)。
    artifact 功能提供了对您无法控制其 ivy 文件的依赖项的更多控制。
    如果依赖项没有 ivy 文件,它可以指定所需的工件。
    有关工件功能以及何时使用它的更多信息,请咨询 Ivy documentation

    【讨论】:

    • 我用更多细节更新了问题文本。据我了解您的回答,当存储库中的依赖项没有常春藤设置时,“工件”元素是必要的吗? AFAICT,guava 或 common-image 都没有 Ivy 配置,但是对于第一个我不需要 artifact-tag。我错过了什么?
    猜你喜欢
    • 2017-06-04
    • 2019-02-15
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多