如何从ant脚本设置路径环境变量

时间:2011-04-09 20:12:33

标签: ant environment-variables

如何从ant脚本

设置路径环境变量

7 个答案:

答案 0 :(得分:64)

这是<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"/>

可能 将名为foo的环境变量设置为bar!bar!的值。我记得有关此事的一些事情,但无法让它发挥作用。

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

答案 1 :(得分:6)

在蚂蚁中,属性是不可改变的,所以大卫的建议如上:

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

无效。

但是(使用antcontrib-library)变量是可变的,所以这有效:

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

注意:使用antcontrib-library从此处下载:ANT Contrib - Download

这可以完成工作,但似乎是一种卑鄙的伎俩。

因此,针对您的具体问题,请尝试:

<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
        <pathelement location="${basedir}/lib/ant-contrib-1.0b3.jar" />
    </classpath>
</taskdef>

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

答案 2 :(得分:2)

您可以使用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>

答案 3 :(得分:1)

我发现它的作用是引用变量

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

答案 4 :(得分:0)

要通过Ant设置环境变量,请尝试调用exec task并设置命令行值。顺便说一下,我没有试过这个,但它应该可以工作。

答案 5 :(得分:0)

因为我没有足够的声誉来评论<variable ...建议我的评论作为答案......: - /

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

(但是因为我认为操纵 env.* (由<property environment="env" ... />任务创建) Java属性/变量< / strong>仅与评估这些Java属性的任务/进程相关,这些属性不会自动“同步”回OS环境变量

答案 6 :(得分:0)

您可以用来扩展路径:

然后您可以从sh执行antexport环境变量:

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

或执行命令并将env设置为value,如下所示:

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