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"/>
これはmightfoo
という環境変数をbar!bar!
の値に設定します。私はこれについて何かを覚えていますが、機能させることができませんでした。
他にできることは、あるantスクリプトに別のantスクリプトを実行させ、最初のantスクリプトに環境値を設定させることです。 ANT_OPT
を設定する必要があったときにこれを行いました。
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"/>
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>
変数の値を引用することで動作することがわかりました
<exec executable="setx">
<arg line="Path "${env.Path};c:\testPath"" />
<arg line="/m" />
</exec>
を使用してパスを展開できます。
そして、インスタンスsh
からant
からexport
まで環境変数を実行できます:
<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>
<variable ...
提案にコメントするほどの評判がないので、私のコメントを回答として...:-/
( "newer")ant-contrib(余分なANTパッケージ)では、タスクは<variable ...
ではなく<var ...
と呼ばれません!
(しかし、env.*
(<property environment="env" ... />
タスクによって作成された)の操作Javaプロパティ/ variablesは、これらを評価するタスク/プロセスにのみ関連しますJavaプロパティはOS環境変数に自動的に「同期」されません)
Antを介して環境変数を設定するには、execタスクを呼び出してコマンドライン値を設定してください。私はこれを試したことはありませんが、うまくいくはずです。