2011-03-08 80 views
3

我配置了两个解析器。一个是公司回购,另一个是当地开发商回购。 我想:常春藤:用显式的解析器解决

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

它是必不可少的,即首先解决直接进入公司回购和收集所有需要的模块。

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

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

+1

你是如何在设置文件中声明解析器的? – 2011-03-13 15:02:23

回答

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属性$ivy.settings.file),因此只有在运行安装目标时才使用“安装”设置。

+0

好吧,我放弃了。我转回到您建议的多个设置,这使得我处理“未知的解析器错误”,除非我在设置-A解决与设置-A解决之间清除缓存。希望有更好的方式,但这对我很有用。 – 2011-03-21 16:32:23