传递依赖关系未使用<filesystem>解析器解析

时间:2016-07-08 16:32:25

标签: ant ivy

我正在使用带有ant 1.9.2的ivy 2.4.0,我希望能够将工件推送到本地存储库并检索它们以及它们的传递依赖性。我的解析器看起来像:

<resolvers>
    <filesystem name="local" checkmodified="true" m2compatible="true">
      <ivy pattern="/something/.ivy/[orgPath]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]"/>
      <artifact pattern="/something/.ivy/[orgPath]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]" />
    </filesystem>

    <chain name="main" returnFirst="true">
      <resolver ref="local" />
      <ibiblio name="artifactory" 
               checkmodified="true" 
               changingMatcher="regexp" 
               changingPattern=".*-SNAPSHOT.*" 
               m2compatible="true" 
               usepoms="true"
               root="url to artifactory" />
    </chain>
  </resolvers>

使用以下方式发布工件(pom和jar都是出版物):

<ivy:deliver deliverpattern="/my project/ivy.xml"/>
<ivy:makepom ivyfile="ivy.xml" pomfile="pom.xml"/>
<ivy:publish resolver="local or artifactory" overwrite="true" publishivy="false">
   <artifacts pattern="/my project/[artifact](-[classifier]).[ext]" />
</ivy:publish>

我可以将工件发布到我的local存储库,但是当我获取它时,不会检索其传递依赖项。

我也尝试发布常春藤文件,但这并没有改变任何东西,这让我发疯,因为如果我从Artifactory存储库发布/获取,一切都按预期工作。可能缺少什么或配置不当?

1 个答案:

答案 0 :(得分:0)

我建议将Artifactory配置为您的默认仓库,并使用modules指令告诉ivy使用本地仓库。

<ivysettings>
    <settings defaultResolver="artifactory"/>
    <resolvers>
        <ibiblio name="artifactory" m2compatible="true" root="http://path/to/artifactory/repo"/>
        <filesystem name="local">
            <artifact pattern="${ivy.settings.dir}/lib/[artifact]-[revision].[ext]"/>
        </filesystem>
    </resolvers>
    <modules>
        <module organisation="myorg1" resolver="local"/>
        <module organisation="myorg2" name="module1" resolver="local"/>
        <module organisation="myorg2" name="module2" resolver="local"/>
    </modules>
</ivysettings>