繁体   English   中英

如何在CakePHP 2 Travis集成中自动加载Composer包

[英]How to autoload Composer packages in CakePHP 2 Travis integration

我正在使用CakePHP 2.x插件,该插件使用Composer来提取包依赖性。 我现在正尝试使用Cake of Cake的Travis包,以便在插件的存储库更新时自动运行我的单元测试。

据我所知,这不包括在我的供应商文件中加载所需的Composer自动加载文件。 因此,我的测试失败,因为缺少第三方包中定义的类。

正如CakePHP 2的高级安装中所述,我正在尝试将以下内容添加到bootstrap.php : -

require APP . 'Vendor' . DS . 'autoload.php';

我试图通过我的.travis.yml文件的before_script来附加bootstrap.php : -

before_script:
  - git clone https://github.com/FriendsOfCake/travis.git --depth 1 ../travis
  - ../travis/before_script.sh
  - echo "require APP . 'Vendor' . DS . 'autoload.php';" >> ../cakephp/app/Config/bootstrap.php

不幸的是,这作为文件APP . 'Vendor' . DS . 'autoload.php'失败了APP . 'Vendor' . DS . 'autoload.php' APP . 'Vendor' . DS . 'autoload.php' APP . 'Vendor' . DS . 'autoload.php'无法找到。 (我也尝试在APP . '..' . DS . 'Vendor' . DS . 'autoload.php'查找文件APP . '..' . DS . 'Vendor' . DS . 'autoload.php' )。

使用Travis安装CakePHP时,Composer autoload.php文件位于何处? 当我的测试在Travis CI上远程运行时,如何确保加载第三方软件包?

第三方插件的默认目录名是vendor (小写),CakePHP有Vendor ,您可以在.../app/composer.json更改它

{
   "config": {
      "vendor-dir": "Vendor" // CakePHP third party plugins dir name
   },
   "require": {
      ...
   }
}

解决方案是将require语句中的Vendor文件夹更改为before_script的小写vendor : -

before_script:
  - git clone https://github.com/FriendsOfCake/travis.git --depth 1 ../travis
  - ../travis/before_script.sh
  - echo "require APP . 'vendor' . DS . 'autoload.php';" >> ../cakephp/app/Config/bootstrap.php

执行此CakePHP后,正确包含Composer自动加载文件。

暂无
暂无

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

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