1

以前は、Jenkinsにperlビルドスクリプトを起動させました。このスクリプトは、スクリプト中のある時点で、ANTジョブを起動する.batファイルを開きます。.batファイルを統合して削除し、perlスクリプトから直接ANTを起動しようとしています。これは正常に実行できましたが、問題は、ANTスクリプトが変数を検索した.propertiesファイルが、.batファイルがANTスクリプトを起動したときのように正しくインポートされなくなったことです。

現在、私は「Exec( "ant -buildfile C:\ project \ buildfile.xml")」と呼ばれ、antを起動しますが、「$ {script.dir}/barbuildfileが見つかりません」というエラーが返されます。 .xml"。"script.dir"は、ビルドファイルと同じディレクトリにある.propertiesファイルで定義されています。これは、.batファイルで起動すると完全に機能しますが、Perlから呼び出されると失敗します。 。理由は何ですか?それとももっと良いのは、それを修正する方法ですか?

また、起動してプロパティファイルを強制的にロードしてみました。"Exec(" ant -buildfile C:\ project \ buildfile.xml -Dpropertyfile = C:\ project \ build.properties ")"を実行すると、同じエラーが発生します。

編集:これは.batファイルです

set project.name=%1

set environment=%2

set version.tag=%3

set build.list=%4

set JAVA_HOME=C:\ProgramFiles\IBM\jdk

set ANT_HOME=C:\ProgramFiles\IBM\IMShared\plugins\org.apache.ant_1.7.1.v20100518-1145

set PATH=C:\Program Files (x86)\IBM\IMShared\plugins\org.apache.ant_1.7.1.v20100518-1145\bin


CALL ant -buildfile C:\scripts\build_service.xml

Perlスクリプト:

system("set project.name=$project");
system("set environment=$environment");
system("set version.tag=$version");
system("set build.list=$service");
system("set JAVA_HOME=C:\ProgramFiles\IBM\jdk");
system("set ANT_HOME=C:\ProgramFiles\IBM\IMShared\plugins\org.apache.ant_1.7.1.v20100518-1145");
system("set PATH=C:\Program Files (x86)\IBM\IMShared\plugins\org.apache.ant_1.7.1.v20100518-1145\bin");
exec("CALL ant -buildfile C:\\scripts\\build_service.xml
4

1 に答える 1

0

まず、 Demnogonisが言及したように
、専用のANT Pluginを介してJenkins から直接 ANT を呼び出すことを検討してください。

第二に、現在の書き方では、各コマンドは、その前に実行された他のシステムコマンド の知識なしsystem(...)に、独自の CMD ウィンドウで実行され ます (これらの以前のコマンドは既に範囲外になっています)。たとえば、-

  • 「my_setup.bat」で行われた変更は「ANT」では利用できません:

    exec("my_setup.bat");
    # at this point, 'my_setup.bat' is forgotten
    exec("ANT ...");
    

    また

    system("my_setup.bat");
    # at this point, 'my_setup.bat' is forgotten
    exec("ANT ...");
    

  • 「run_my_ant.bat」のセットアップは、変更が行われた後にANT が BAT ファイル内から呼び出されると仮定して、ANT に認識されます。

    exec("run_my_ant.bat");
    

これを克服するには、%ENVハッシュを使用して環境に変数を設定
し、スクリプト内の他のコマンドで変数を使用できるようにします。

$ENV{'project.name'} = $project;
$ENV{'environment'}  = $environment;
$ENV{'version.tag'}  = $version;
$ENV{'build.list'}   = $service;
$ENV{'JAVA_HOME'}    = "C:\\ProgramFiles\\IBM\\jdk";
$ENV{'ANT_HOME'}     = "C:\\ProgramFiles\\IBM\\IMShared\\plugins\\org.apache.ant_1.7.1.v20100518-1145";
$ENV{'PATH'}         = "C:\\Program Files (x86)\\IBM\\IMShared\\plugins\\org.apache.ant_1.7.1.v20100518-1145\\bin";
exec("CALL ant -buildfile C:\\scripts\\build_service.xml ...");

こちらもご覧ください:

幸運を!

于 2012-10-26T07:58:13.027 に答える