常春藤:用显式解析器解决

时间:2011-03-08 16:37:27

标签: ivy

我配置了两个解析器。一个是公司回购,另一个是本地开发商回购。 我想:

<ivy:resolve  />
<ivy:install from="company" to="local" ... />

至关重要的是,第一个解决方案直接进入公司仓库并收集所有需要的模块。

问题:我无法强制解析使用明确定义的解析器。我尝试在我的设置文件中使用“模块”,但后来我只从公司获得一些模块,其余的仍然是从本地读取的(当时是空的,所以我得到解决错误)。

我可以使用2个设置文件,一个用于准备,一个用于本地开发,但必须有更好的方法。为什么“发布”设置一个解析器,但“解决”不能?

1 个答案:

答案 0 :(得分:5)

  

为什么“发布”可以设置解析器,但是   “决心”不能?

绝对可以解决。这通常通过您提到的不想做的多个设置文件来完成。在实践中,我发现将多个设置文件与解析调用的settingsRef属性结合使用是非常常见的(如果不是标准的话)。

在我们的项目中,我们采取以下措施:

...
<target name="init-ivy" depends="">
    <ivy:settings id="install.settings"
                  file="${project.ivy.config.dir}/ivysettings-install.xml"/>
    <ivy:settings id="internet.settings"
                  file="${project.ivy.config.dir}/ivysettings-internet.xml"/>
    ...
</target>
...
<!-- note init-ivy has already been called before this target runs -->
<target name="resolve-internet" if="internet.connected" >
        <echo>"internet connected! Resolving dependencies via internet..."<echo/>
        <ivy:resolve settingsRef="internet.settings"
                     haltonfailure="false" failureproperty="resolve.failed"/>
</target>
...

当然,在一个更简单的项目中,你总是可以自动调用“主”设置文件(通过将其置于根目录或编辑常春藤属性$ivy.settings.file),所以你只能使用“在运行安装目标时安装“设置。