如何从ant脚本中设置path环境variables

如何从ant脚本中设置path环境variables

这是一个<exec>任务吗?

您可以在运行<exec>任务时设置环境variables:

 <exec executable="${my.command}"> <env key="foo" value="bar"/> <arg line="some value"/> </exec> 

您可以使用<property environment="env"/>展开path:

 <property environment="env"/> <exec executable="${my.command}"> <env key="PATH" value="${env.PATH}:${my.directory}"/> </exec> 

如果这是针对某个需要环境variables的自定义任务,但是不允许您在任务中设置环境variables(如果未设置该环境variables),则可以尝试将其设置为:

 <property environment="env"/> <property name="env.foo" value="bar!bar"/> 

可能会将名为foo的环境variables设置为bar!bar!的值bar!bar! 。 我记得这件事,但没有得到它的工作。

你可以做的另一件事是有一个ant脚本执行另一个,并有第一个ant脚本设置环境值。 当我必须设置ANT_OPT时,我这样做了。

在ant里,属性是不变的,所以大卫的build议如上:

 <property name="env.foo" value="bar!bar"/> 

将无法工作。

但variables是可变的,所以这个工作:

 <variable name="env.foo" value="bar!bar"/> 

这完成了工作,但似乎是一个卑鄙的伎俩。

所以对于你的具体问题,试试

 <variable name="env.PATH" value="some:custom:value"/> 

您可以使用setx命令设置环境variables。

有关setx命令的帮助,请参阅http://ss64.com/nt/setx.html

 <exec executable="setx.exe"> <arg line="Path C:\jdk1.5.0_12\bin"/> <arg line="/m"/> </exec> 

我发现它的工作原理是引用variables的值

 <exec executable="setx"> <arg line="Path &quot;${env.Path};c:\testPath&quot;" /> <arg line="/m" /> </exec> 

要通过Ant设置环境variables,请尝试调用exec任务并设置命令行值。 顺便说一句,我没有尝试过,但它应该工作。

因为我没有足够的声望评论<variable ...build议我的评论作为答案…: – /

在(“更新”) ant-contrib (额外的ANT包)中,任务不被称为<variable ... but <var ...

(但它对我来说不起作用,因为我认为对env.* (由<property environment="env" ... />任务创build)的Java操作的控制只与评估这些任务/ 不会自动“同步”到OS环境variables的 Java属性)

您可以使用扩展path:

然后你可以执行例如shant export环境variables:

 <property environment="env"/> <exec executable="sh"> <arg value="-c"/> <arg value="export PATH=${env.Path}:${myPath}"/> </exec> 

或者执行你的命令并设置envvalue ,如下所示:

 <property environment="env"/> <exec executable="${your.command}"> <env key="PATH" value="${env.PATH}:${your.directory}"/> </exec>