web-dev-qa-db-ja.com

Antスクリプトからパス環境変数を設定する方法

Antスクリプトからパス環境変数を設定する方法

41
user855

これは<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"/>

これはmightfooという環境変数をbar!bar!の値に設定します。私はこれについて何かを覚えていますが、機能させることができませんでした。

他にできることは、あるantスクリプトに別のantスクリプトを実行させ、最初のantスクリプトに環境値を設定させることです。 ANT_OPTを設定する必要があったときにこれを行いました。

65
David W.

Antでは、プロパティは不変であるため、上記のDavidの提案:

<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"/>
6
Jerry

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

変数の値を引用することで動作することがわかりました

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

を使用してパスを展開できます。

そして、インスタンスshからantからexportまで環境変数を実行できます:

<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>
0
Jens A. Koch

<variable ...提案にコメントするほどの評判がないので、私のコメントを回答として...:-/

( "newer")ant-contrib(余分なANTパッケージ)では、タスクは<variable ...ではなく<var ...と呼ばれません!

(しかし、env.*<property environment="env" ... />タスクによって作成された)の操作Javaプロパティ/ variablesは、これらを評価するタスク/プロセスにのみ関連しますJavaプロパティはOS環境変数に自動的に「同期」されません

0

Antを介して環境変数を設定するには、execタスクを呼び出してコマンドライン値を設定してください。私はこれを試したことはありませんが、うまくいくはずです。

0
Vicky