繁体   English   中英

Jenkins启动其中包含ANT的Perl脚本,但是ANT无法读取.properties文件

[英]Jenkins launches a Perl script that has ANT in it, but ANT is unable to read a .properties file

以前,我让Jenkins启动一个perl构建脚本,该脚本在编写脚本的某个时候会打开一个.bat文件来启动我们的ANT作业。 我正在尝试整合并摆脱.bat文件,直接从perl脚本启动ANT。 我已经能够成功完成此操作,但是问题是,不再像在.bat文件启动ANT脚本时那样正确导入ANT脚本查看其变量的.properties文件。

目前,我只是被称为“ Exec(“ ant -buildfile C:\\ project \\ buildfile.xml”),它会触发蚂蚁,但返回错误,“找不到$ {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

首先,请考虑直接从詹金斯致电ANT
通过Demnogonis提到的专用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 ..."); 
  • 假设从BAT文件中调用了ANT,“ run_my_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 ...");

另请参阅:

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM