詹金斯(Jenkins)启动了一个带有蚂蚁的perl脚本,但蚂蚁无法读取.properties文件



以前我让詹金斯启动了一个perl构建脚本,该脚本在脚本中的某个时候将打开一个.bat文件,该文件启动了我们的ant工作。我正在尝试合并并摆脱.bat文件,并直接从Perl脚本启动ANT。我已经能够成功地做到这一点,但是问题是ANT脚本所查看的.properties文件不再像.bat文件启动ANT脚本那样正确导入其变量。

目前,我刚刚称为" exec(" ant -buildfile c: project buildfile.xml"),它会从蚂蚁发出,但它带有错误,"找不到$ {script.dir。通过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:ProgramFilesIBMjdk
set ANT_HOME=C:ProgramFilesIBMIMSharedpluginsorg.apache.ant_1.7.1.v20100518-1145
set PATH=C:Program Files (x86)IBMIMSharedpluginsorg.apache.ant_1.7.1.v20100518-1145bin

CALL ant -buildfile C:scriptsbuild_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:ProgramFilesIBMjdk");
system("set ANT_HOME=C:ProgramFilesIBMIMSharedpluginsorg.apache.ant_1.7.1.v20100518-1145");
system("set PATH=C:Program Files (x86)IBMIMSharedpluginsorg.apache.ant_1.7.1.v20100518-1145bin");
exec("CALL ant -buildfile C:\scripts\build_service.xml

首先,请考虑直接从Jenkins打电话
通过Demnogonis提到的专用ANT插件。

第二,当前编写的方式,每个system(...)命令在其自己的CMD窗口中运行,
不知道其他 system 命令在
之前运行(这些先前的命令已经出现在范围之外),例如 -

  • " my_setup.bat"中所做的更改不可用:

    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'中的设置是蚂蚁已知的,假设蚂蚁是从蝙蝠文件中调用的,
    进行了更改之后:

    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 ...");

另请参阅此处:

  • 我如何在perl中设置环境变量

  • 我们可以将Perl脚本中使用的变量设置为环境变量

祝你好运!

最新更新