2011-04-09 54 views

回答

0

设置要通过蚂蚁设置环境变量,尝试调用exec任务,并设置在命令行中值。顺便说一下,我没有尝试过,但它应该可以工作。

57

这是否为<exec>任务?

您可以设置环境变量,当您运行<exec>任务:

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

您可以使用<property environment="env"/>拓展的路径:

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

如果这是一个需要环境的一些自定义任务变量,但不允许你在任务中设置环境变量,如果没有设置,你可以尝试设置它:

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

威力一套名为foobar!bar!值的环境变量。我记得有关此事的一些信息,但无法使其发挥作用。

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

+0

第一种解决方案适用于我。我正在运行RHEL 5.4,并且必须在需要它的ant exec任务中设置我的PYTHONPATH。 – Alessandro 2013-02-14 13:44:44

+3

在我的机器上(Win7),它必须是env.Path,而不是env.PATH。 – 2013-04-19 19:37:10

+3

@NateGlenn在Unix和Java中(因此也是在Ant中),环境变量名称区分大小写。 'PATH'与'Path'和'path'不同。在Windows中,环境变量名称不区分大小写。因此,'Path',''Path'和'PATH'都是一样的,但是当你使用Ant时,它们代表三个不同的变量。在Unix中,它始终是'PATH'。在Windows中,我甚至不确定它是否从机器到机器都是一样的。您可以使用''任务来查看您的系统对环境变量所做的工作。 – 2013-04-21 22:36:17

3

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

对于SETX命令的帮助参考http://ss64.com/nt/setx.html

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

从setx文档:“2)在本地系统上,由此工具创建或修改的变量将在未来的命令窗口中可用,但在当前的CMD.exe命令窗口中不可用。” 所以这不会作为问题的解决方案,除非用户想要打开一个新的shell。 – Jerry 2013-04-24 14:59:42

5

在蚂蚁,性质是不变的,所以上述大卫的建议:

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

将无法​​正常工作。

但变量是可变的,所以此工程:

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

这干得不错,但似乎是一个卑鄙的伎俩。

所以为了您的具体问题,尝试

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

这是一个很好的答案,但请注意,变量任务不是标准Ant分布的一部分;你必须安装ant-contrib。 – 2013-08-14 16:45:27

+1

此外,这实际上不会更新Windows环境变量只是ant属性env.PATH – Clintm 2015-06-03 17:57:46

0

,因为我没有足够的声誉在<variable ...建议,回答我的评论发表评论...: -/

在(”更新“)ant-contrib(额外的ANT包)任务是不叫<variable ...但是<var ...

(但因为我想的env.*(由<property environment="env" ... />任务)Java属性/变量创建操作仅适用于任务/进程评估这些Java性能,这是有关它没有为我工作反正不会自动“同步回”到OS环境变量

1

,我发现它的工作原理是报价变量

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

的价值您可以使用扩展的路径:

然后你就可以从ant执行例如shexport环境变量:

<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>