Как автоматически загружать пакеты Composer в CakePHP 2 Travis integration


Я работаю над CakePHP 2.X плагин, который использует Composer для извлечения зависимости пакета. Теперь я пытаюсь использовать пакет Friends of CakeTravis для автоматического запуска модульных тестов при обновлении репозитория плагина.

Насколько я могу судить, это не включает файл autoload Composer, необходимый для загрузки в Мои файлы поставщика. В результате мои тесты терпят неудачу, так как класс, определенный в пакете сторонних разработчиков, отсутствует.

Как описано в расширенная установка CakePHP 2 я пытаюсь добавить следующее bootstrap.php:-

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

Я попытался сделать это через before_script моего .travis.yml файла для добавления 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').

Где находится файл Composer autoload.php при установке CakePHP с помощью Travis? Как я могу гарантировать, что мой сторонний пакет загружен, когда мои тесты выполняются удаленно на Travis Ки?

2   3  

2 ответа:

Имя каталога по умолчанию для сторонних плагинов - vendor (нижний регистр), CakePHP имеет Vendor, Вы можете изменить его в .../app/composer.json

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

Решение состояло в том, чтобы изменить папку Vendor в операторе require на строчную vendor в операторе {3]}.before_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 содержит композитор файл автозагрузки.