2011-04-09 56 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>