Phing и Composer, что там?

Я хочу использовать для своих приложений и Phing, и Composer. Phing как система сборки и Composer для управления зависимостями. Но как их использовать?

В настоящее время мы устанавливаем Phing глобально на все серверы. Предполагается, что Phing полностью автоматизирует сборку наших различных проектов. Просто проверьте копию проекта, запустите Phing с целью по умолчанию, и все будет хорошо. Это также означает, что там должна быть цель Phing, которая вызывает Composer для установки всех зависимостей. Итак, Финг звонит композитору. Но мне ничего не удалось найти об этой установке. Нет ComposerTask или чего-то подобного, и поиск в Google не показывает, что кто-то работает таким образом.

Но я вижу многое наоборот. Люди, использующие Composer для установки Phing в качестве зависимости проекта.

Итак, каковы (не) преимущества каждого метода? Я пытаюсь сделать это неправильно?


person Sander Marechal    schedule 31.05.2012    source источник
comment
К вашему сведению: у меня был такой же вопрос. Для меня гораздо разумнее использовать инструмент сборки (Phing), вызывающий управление зависимостями (Composer), а не наоборот. Похоже, они добавили ComposerTask в Phing, поскольку вы спросили об этом: phing.info/docs/guide/stable/chapters/appendixes/   -  person takteek    schedule 28.01.2013
comment
Ссылка на ComposerTask выше не работает, вот рабочая ссылка phing.info/docs/ руководство / trunk / ComposerTask.html   -  person Lester Peabody    schedule 01.03.2017


Ответы (2)


Я думаю, что главное преимущество установки phing через композитор заключается в том, что для проектов с открытым исходным кодом проще убедиться, что ваши пользователи установили phing таким образом. Обычно в таких настройках phing - это просто инструмент, используемый некоторыми библиотеками для решения некоторых задач.

Другое преимущество состоит в том, что каждый проект может использовать разные версии phing, чего нельзя сделать, если у вас есть общесистемная версия.

Если вы используете phing для управления сборкой / настройкой всего проекта, вызов composer из него может иметь смысл, но и наоборот. Например, вы можете использовать скрипты композитора, чтобы запускать задачи phing после каждого обновления зависимости. Таким образом, настройка проекта будет такой:

  • проверить
  • запустить композитор
  • композитор запускает phing после обновления / установки deps
  • проект построен

Честно говоря, не знаю, есть ли правильный ответ. Вы можете заставить работать оба способа, но сделав это таким образом, вы, по крайней мере, избавитесь от необходимости сначала устанавливать phing. Очевидно, вам нужно вместо этого установить composer, но, возможно, это проще, и он вам все равно понадобится.

person Seldaek    schedule 31.05.2012
comment
Я столкнулся с одной проблемой, которая, как мне кажется, задокументирована как проблема Github (не могу найти ее прямо сейчас) ... после установки phing в качестве зависимости разработчика для композитора phing classMap частично конфликтовал с classMap из файла composer.json в приложении. Сначала сбил меня с толку. - person Paul Redmond; 23.04.2014
comment
Разработчик должен убедиться, что у него есть все необходимые инструменты для разработки / сборки. Ваш ответ похож на то, что репозиторий C ++ должен содержать логику для установки компилятора gcc (композитор устанавливает phing). Репозиторий кода должен состоять только из фактического кода и плана сборки. Это означает, что сначала Phing, композитор вызывается с помощью phing. Кроме того, у вас есть проблема с куриным яйцом - Composer может установить Phing, но что, если у кого-то еще не установлен композитор? Видите ли, именно поэтому я сказал, что инструменты / двоичные файлы разработчика - это ответственность разработчика, когда он устанавливает свою операционную систему. - person Foo Bar; 11.02.2017

Дополнительные мысли по этой теме.

В целом Селдэк прав в том, что возможно и то, и другое. Однако есть и аргументы в пользу пинга. На уровне архитектуры сборки я думаю, что сначала композитор не имеет смысла. Процесс сборки имеет более широкий охват и более длительный срок службы и поэтому должен управлять диспетчером зависимостей, а не наоборот.

Кроме того, если вы работаете с заменой токена Phing, чтобы определить, какие версии зависимостей вы хотите установить, в какой среде, почти невозможно сначала перейти к composer, потому что phing сгенерирует composer.json и, следовательно, должен быть установлен до того, как composer сможет запустить composer.

person markus    schedule 23.10.2013
comment
Это должен быть правильный ответ. Вся сборка содержит следующие шаги (некоторые из которых могут быть необязательными): проверка, установка пакетов, тестирование / проверка, компиляция, развертывание. Обычно этим занимается какой-нибудь дворецкий, например, Дженкинс. Дженкинс выполняет проверку, а затем вызывает какие-то инструкции по сборке, содержащиеся в репозитории кода (так, чтобы репозиторий проекта был полностью автономным, включая всю необходимую информацию о сборке). В идеале это была бы цель phing (например, build.xml). Затем Phing позаботится о вызове композитора, очистке и, наконец, развертывании (например, через ssh / rsync). - person Foo Bar; 11.02.2017