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



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

这是<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_OPT

时,我这样做了。

在ant中,属性是不可变的,所以上面David的建议:

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

行不通。

但是(在antcontrib-library中)变量是可变的,所以这个可以工作:

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

注意:使用antcontrib库从这里下载: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"/>

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

setx命令帮助参考http://ss64.com/nt/setx.html

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

我发现它通过引用变量

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

您可以使用展开路径:

然后你可以执行shantexport环境变量:

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

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

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

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

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

在("较新的") ANT -contrib(额外的ANT包)任务是不叫<variable ...,而是<var ... !

(但它没有为我工作,因为我认为操作 env.* (由<property environment="env" ... />任务创建)Java属性/变量仅与评估这些Java属性的任务/进程相关,这些Java属性不会自动"同步回"到操作系统环境变量)

相关内容

  • 没有找到相关文章

最新更新