2

実行可能ファイルのライセンス情報をファイルに出力しversion.txt、ライセンスがProduct is licensed to MyOrg. それらが等しくない場合は、明示的にスローexit 1してビルドを失敗させます。そうでない場合は、変数の値をエコーし​​ます。以下は作業コードです。

@echo off
product_executable --version 1>version.txt 2>&1
FOR /F "SKIP=1 TOKENS=*" %%L IN (version.txt) DO set checkstr=%%L
del /q /f version.txt
if NOT "%checkstr%"=="Product is licensed to MyOrg" ( EXIT 1 ) else ( ECHO %checkstr% )

しかし、必要なのは、変数をファイルに保存してそこから行を読み取ってファイルを削除する代わりに、環境変数に保存して、条件付きビルド ステッププラグインのようlicense_infoにアクセスしたいということです。しかし、私はそうすることができません。${license_info}

4

3 に答える 3

1

シェル スクリプト (または Windows バッチ スクリプト) で環境変数を作成し、後のビルド ステップで使用できるようにする直接的な方法を認識していません。これを回避する唯一の方法は、情報をプロパティ ファイルに書き出し、次のビルド ステップでプロパティ ファイルを読み取ることです。smlstvnh として、 EnvInject プラグインを使用してプロパティ ファイルを読み取る必要があります。私はいくつかのビルドでこの面倒な方法を使用しました。

于 2013-10-22T18:24:04.277 に答える
0

私が過去に行ったことは、EnvInject Pluginを使用してフォーマットされたファイルkey=valueに情報を書き込むことでした。.properites

Java .properties ファイルは基本的にただ

key_1=value_1
key_2=value_2
license_info=someinterestinglicenseinfo
key_n=value_n

文字列値には引用符は必要ありません。

次に、プラグインを使用して、おそらくファイルに書き込まれたそのファイルを参照し、${WORKSPACE}これらの環境変数に形式でアクセスできます${license_info}

于 2013-10-22T15:25:09.243 に答える
0

このようにバッチで実行できるはずです。これにより、テキストファイルを書き込む必要がなくなります...

@echo off
FOR /F "SKIP=1 TOKENS=*" %%L IN ('product_executable --version') DO set checkstr=%%L
if NOT "%checkstr%"=="Product is licensed to MyOrg" ( EXIT 1 ) else ( ECHO %checkstr% )

ただし、バッチ ファイルを完全に削除しようとしている場合、これは役に立ちません。

于 2013-10-22T12:21:12.740 に答える