2013-04-29 112 views
1

我有一个ant/ivy项目,我也在Eclipse中使用。问题是在eclipse中,ivyde正在抱怨我的ivysettings.xml中的FileResolver,声称路径必须是绝对路径。我相信,其原因是它没有评估环境变量。FileResolver,环境变量和ivyde

以下是我的ivysettings.xml文件,ivyde无法解析由于这种绝对路径要求:

<ivysettings> 
    <properties environment="env"/> 
    <properties file="./ivysettings.properties"/> 
    <settings defaultResolver="chain"/> 
    <resolvers> 
    <filesystem name="local"> 
     <ivy pattern="${repository.dir}/[module]/ivy.xml" /> 
     <artifact pattern="${repository.dir}/[module]/[artifact].[ext]" /> 
    </filesystem> 
    <chain name="chain"> 
     <resolver ref="local"/> 
     <ibiblio name="maven2" m2compatible="true"/> 
    </chain> 
    </resolvers> 
    <modules> 
    <module organisation="org.example" resolver="local"/> 
    </modules> 
</ivysettings> 

ivysettings.properties包含:

repository.dir=${env.githome}/metademo/ivy_build/repository 

蚂蚁很高兴与此,但ivyde似乎没有解决{$ env.githome}。我需要一些方法来针对不同开发人员环境的FileSystem解析器执行此“绝对路径”要求......所以使用环境变量来引用它。我如何让ivyde认识到这一点?

回答

1

为了使配置能够在Ant或Eclipse等不同环境下工作,它应该独立于任何外部变量。 ivysettings.xml文件和属性文件应该足以解析任何路径。

在这里,您已经通过Ant设置了env.*属性。您最好让艾薇用properties及其environment属性自己做。

cf http://ant.apache.org/ivy/history/latest-milestone/settings/properties.html

+0

感谢您回答尼古拉斯。我很困惑,但是你的声明说我使用ant来设置env。*属性。这些属性被加载到ivysettings.xml中,其中ant ivy:settings目标将加载,或者ivyde将加载。 – ticktock 2013-04-29 22:59:38

+1

我没有完整的上下文,但我想你的构建中的某个地方有''。所以当Ivy在Ant中运行时,它可以看到Ant属性,它可以正确解析'env.githome'。因此我建议在Ivy内部而不是Ant内部设置env。*'属性设置。 – 2013-04-30 19:09:41

+1

我的其他问题是得到eclipse(作为应用程序)来查看环境变量.. mac开发人员:launchctl setenv ticktock 2013-05-01 17:22:54