【问题标题】:setting env variable with ant's exec task - doesn't seem to work使用 ant 的 exec 任务设置环境变量 - 似乎不起作用
【发布时间】:2013-11-11 08:53:50
【问题描述】:

当我尝试使用 ant 的 exec 任务设置一些变量时,它似乎没有设置为我需要的值。不知道这里出了什么问题。

当我使用 cmd 从命令行设置和回显时,它可以完美运行文件。

<exec executable="cmd">
    <arg value="set"/>
    <arg value="MY_VAR=SOME_VAL"/>
</exec>
-->
<echo message="MY_VAR is set to %MY_VAR%"/>

输出如下:

exec
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\MY_PROJ_BASE_DIR_HERE>
echo
MY_VAR is set to **%MY_VAR%**

【问题讨论】:

标签: ant environment-variables


【解决方案1】:

使用cmd.exe/C 选项。

build.xml

<project name="ant-exec-cmd-with-env-key" default="run">
    <target name="run">
        <exec executable="cmd" failonerror="true">
            <env key="MY_VAR" value="SOME_VAL"/>
            <arg value="/c"/>
            <arg value="echo %MY_VAR%"/>
        </exec>
    </target>
</project>

输出

run:
     [exec] SOME_VAL

【讨论】:

  • 接受了您的回答。小查询,为了在 exec 之外访问 %MY_VAR%,我需要再次使用属性 ant 任务吗?。
  • 复制到新属性将不起作用! :( exec 不支持嵌套的“property”元素。
  • 正如我所发布的,MY_VAR 仅在 &lt;exec&gt; 任务的生命周期内存在。如果您需要在任务完成后引用某种属性,请在调用 &lt;exec&gt; 之前设置一个属性并将该引用传递给 &lt;exec&gt;&lt;property name="my.var.local" value="SOME_VAL"/&gt; &lt;exec...&gt;&lt;env key="MY_VAR" value="${my.var.local}"/&gt;...&lt;/exec&gt;
【解决方案2】:

您确定问题不在于您对变量的读取吗?

<property environment="env"/>
<property name="MY_VAR" value="${env.MY_VAR}"/>

【讨论】:

  • 我们不能在 exec 中使用属性。 'exec 不支持嵌套的“属性”元素。' .我正在尝试在 Windows 上使用“set MY_VAR=SOME_VAL”设置一些变量,并且类似的方式想要在 *nix 上使用导出
猜你喜欢
  • 2012-04-01
  • 2015-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多