2015-12-21 77 views
3

我正在使用Composer来引入软件包依赖关系的CakePHP 2.x插件。我现在试图使用Cake of Friends的Travis package自动运行我的单元测试,只要更新插件的存储库。如何自动加载CakePHP 2中的Composer软件包Travis集成

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

CakePHP 2's advanced installation描述我想下面的添加到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 . '..' . DS . 'Vendor' . DS . 'autoload.php'中查找文件)。

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

+1

我猜测,它使用的是默认作曲家供应商目录,这是' 。/ vendor/autoload.php'(小写厂商,顶级目录)。在Cake 2中,供应商下的应用程序结构中的所有供应商文件以及[文档]中的第一位(http://book.cakephp.org/2.0/en/installation/advanced-installation.html#installing-cakephp -with-composer)关于作曲家文件改变作曲家的供应商目录,FOC travis安装程序不会为你做。您可以通过在before_script块中添加'composer config vendor-dir“供应商/”'“来编辑Cake预期的目录。 – jeremyharris

回答

0

的解决方案是在require声明Vendor文件夹更改为小写vendorbefore_script: -

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的正确包括作曲家自动加载的文件之后。

1

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

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

我认为这是正确的解决方案。我以这种方式工作。 –

相关问题