Мир меняется, и веб-разработка меняется вместе с ним, еще 3 года назад я даже не думал о GIT, как инструмента для разработки расширений, сейчас я уже не могу помыслить, как можно разрабатывать, что-то и при этом не использовать GIT. Не так давно собирая пакет расширений Joomla состоящий из 22 расширений в ручную, я подумал "Какого...", до сих пор делаю это в ручную, ведь это иногда занимает очень много времени и посвятил несколько часов своего времени изучению Phing.
Первой проблемой с которой я столкнулся - это установка Phing на Windows - эта статья поможет вам установить его в windows окружении.
Вторая проблема - формирование xml файла, который бы позволил автоматически собирать пакет, как раз об этом мы и поговорим в этой статье.
Создаем файл для сборки пакета
Я рекомендую использовать имя файла build.xml. Вы можете использовать любое название, но тогда вам придется указывать в командной строке имя файла при наборе команды phing.
Что написать внутри файла для сборки?
<project name="slogin" default="dist" basedir="."> <property name="build" value="build" /> <property name="dist" value="dist" /> <property name="filename" value="pkg_slogin_v2.2_j2.5_j3.zip" /> <target name="init" depends="clean"> <mkdir dir="${build}" /> <mkdir dir="${dist}" /> </target> <target name="pack-plugins"> <zip destfile="${build}/mod_slogin.zip" description="mod_slogin"> <fileset dir="mod_slogin" /> </zip> <zip destfile="${build}/com_slogin.zip" description="com_slogin"> <fileset dir="com_slogin" /> </zip> <zip destfile="${build}/lib_slogin_oauth.zip" description="lib_slogin_oauth"> <fileset dir="libraries/slogin" /> </zip> <copy file="pkg_slogin.xml" todir="${build}" /> </target> <target name="dist" depends="init, pack-plugins"> <zip destfile="${dist}/${filename}"> <fileset dir="${build}/" > <include name="**/**" /> </fileset> </zip> </target> <target name="clean" description="clean up"> <delete dir="${build}" /> <delete dir="${dist}" /> </target> </project>
В этом коде я привел пример содержимое файла для сборки пакета нашего расширения Slogin. Объясню, как это работает. Создаются папки "build" и "dist", последовательно берется папки из секции "pack-plugins", архивируются и складываются в папку "build", за тем в эту же папку копируется файл pkg_slogin.xml. И после этого берутся все файлы в папке "build" упаковываются в архив который называется "pkg_slogin_v2.2_j2.5_j3.zip" и копируется в папку "dist". При перезапуске файла сборки, папки "build" и "dist" отчищаются.
На что обратить внимание?
<property name="filename" value="pkg_slogin_v2.2_j2.5_j3.zip" />
pkg_slogin_v2.2_j2.5_j3.zip - это название конечного пакета расширения.
<target name="pack-plugins">
Секция pack-plugins содержит список папок, которые мы архивируем, каждая папка архивируется такой конструкцией:
<zip destfile="${build}/mod_slogin.zip" description="mod_slogin"> <fileset dir="mod_slogin" /> </zip>
Где:
${build}/mod_slogin.zip - путь до конечного файла после упаковки.
description="mod_slogin" - описание файла, должно быть уникальным.
dir="mod_slogin" - папка которую мы упаковываем, путь определяется относительно корня директории, где лежит файл xml файл сборки.
Собственно на этом можно считать урок законченным, в конечном итоге мы получили очень простой файл, на редактирование, которого у вас уйдет несколько минут, а в последствии вы сможете пересобрать пакеты расширений за считанные секунды.