为什么Artifactory需要为某些Ivy依赖项提供显式工件

时间:2015-09-30 12:20:29

标签: ivy artifactory

我有一个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会自己建议它,并且解决方案没有完成就无法解决。

我正在使用Ivy来对抗Maven布局的存储库。我的设置由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:添加了常春藤设置示例

1 个答案:

答案 0 :(得分:1)

执行依赖项解析的工具是Ivy客户端而不是Artifactory。 基于依赖性减速,Ivy resolver决定从存储库请求哪个工件(在您的情况下,它是Artifactory)。
artifact功能可以更好地控制您无法控制其常春藤文件的依赖项 如果依赖项没有常春藤文件,它可以指定所需的工件 有关工件功能及其使用时间的更多信息,请参阅Ivy documentation