Эта страница будет сделать усилия, чтобы обеспечить как последовательный и гибкий расширения структуры, кроме того, чтобы дать краткое пояснение о том, как использовать включены сценарии Ant для создания и пакет расширений.
Расширение структуры
Компонент
НЕ ЗАКОНЧЕНА
Модуль
НЕ ЗАКОНЧЕНА
Плагин
НЕ ЗАКОНЧЕНА
Шаблон
НЕ ЗАКОНЧЕНА
Окружающая среда
Скрипты зависят от трех переменных среды, эти значения могут быть установлены в окружающей среде, вы можете передать IDE, чтобы установить их при запуске сценария или в крайнем случае, вы можете редактировать common.xml и установить их вручную. Настройка их вручную не рекомендуется для проектов с несколькими участниками или тестирования среды как пути должны совпадать.
SourceDir
Это абсолютный путь к установке Joomla вы тестирование на расширение
BUILDDIR
Это путь к временной папке используется для создания пакетов, может быть относительным или абсолютным путем
RELEASEDIR
Это папка, в которой положить упакованы расширений, когда сценарий вызывается с целевыми "пакет"
Нужные цели
ПРИМЕЧАНИЕ: собственность префикс в нужные цели имеет различное значение в зависимости от типа расширения, плагины он используется для определения группы плагин, и для других типов она используется, чтобы определить, является ли расширение для сайта или для администратора. Чтобы построить мишени с администратором расширение префикс к "администратор"
buildcomponent
Цель создать компонент занимает название компонента и префикс, приставка либо пуст, либо "администратор", если мы строим компонент для бэкэнд
<antcall target="buildcomponent">
<param name="NAME" value="com_helloworld"/>
<param name="PREFIX" value=""/>
</antcall>
buildmodule
Цель построить модуль принимает имя модуля и префикс, приставка либо пуст, либо "администратор", если мы строим модуль для бэкэнд
<antcall target="buildmodule">
<param name="NAME" value="module_helloworld"/>
<param name="PREFIX" value=""/>
</antcall>
buildtemplate
Цель создать шаблон принимает имя шаблона и префикс, префиксом или пусто или "администратор", если мы строим шаблон для бэкэнд
<antcall target="buildtemplate">
<param name="NAME" value="helloworld"/>
<param name="PREFIX" value=""/>
</antcall>
buildplugin
Цель создать плагин принимает имя шаблона и префикс, префикс плагина группы, к которой принадлежит плагин
<antcall target="buildplugin">
<param name="NAME" value="plg_helloworld"/>
<param name="PREFIX" value="system"/>
</antcall>
Сценарии
build.xml
Этот файл в проект или в расширение, независимо пользователь считает нужным, он включает в себя common.xml файл и определяет, какие расширения построить. Вы можете иметь один файл сборки на расширение или можно использовать один файл сборки построить много расширений. Тем не менее, лучше иметь один файл компоновки для каждого расширения названы расширение, поэтому строить файл HelloWorld компонент будет build_com_helloworld.xml или просто com_helloworld.xml. Это показано на загружаемые пакеты, например.
<?xml version="1.0" encoding="UTF-8"?>
<project name="helloworld" default="all" basedir=".">
<import file="common.xml"/>
<target name="all" depends="build,sync,package"/>
<target name="package">
<antcall target="_package">
<param name="NAME" value="com_helloworld"/>
</antcall>
</target>
<target name="build">
<antcall target="buildcomponent">
<param name="NAME" value="com_helloworld"/>
<param name="PREFIX" value=""/>
</antcall>
</target>
<target name="sync">
<antcall target="_sync">
<param name="NAME" value="com_helloworld"/>
</antcall>
</target>
</project>
common.xml
Именно здесь происходят чудеса, этот файл содержит нужные цели построить любой модуль, плагин, шаблон или компонент. Вы,
как правило, не должны изменять этот файл, если вам нужно вручную установить переменные среды или изменения общей структуры расширения.
<?xml version="1.0" encoding="UTF-8"?>
<project>
<property environment="env"/>
<property name="source" value="${env.SOURCEDIR}"/>
<property name="release" value="${env.RELEASEDIR}"/>
<property name="builddir" value="${env.BUILDDIR}"/>
<property name="verbose" value="false"/>
<tstamp>
<format property="NOW" pattern="yyyyMMdd"/>
</tstamp>
<loadfile property="dist.revision" srcFile="./.svn/entries" failonerror="false">
<filterchain>
<headfilter lines="1" skip="3"/>
<deletecharacters chars="\n"/>
</filterchain>
</loadfile>
<condition property="version" value="${NOW}_r${dist.revision}" else="${NOW}">
<isset property="dist.revision"/>
</condition>
<target name="_clean">
<delete dir="${builddir}/${NAME}" verbose="${verbose}"/>
</target>
<target name="_sync">
<sync todir="${NAME}" includeemptydirs="true">
<fileset dir="${builddir}/${NAME}"/>
<preserveintarget>
<include name="**/.svn/**"/>
</preserveintarget>
</sync>
</target>
<target name="_package">
<zip destfile="${release}/${NAME}_${version}.zip" basedir="${NAME}" excludes=".svn"/>
</target>
<target name="buildplugin" depends="_clean">
<copy todir="${builddir}/${NAME}" overwrite="true" verbose="${verbose}" failonerror="false">
<fileset dir="${source}/plugins/${PREFIX}">
<include name="*${NAME}*"/>
</fileset>
</copy>
</target>
<target name="buildmodule" depends="_clean">
<copy todir="${builddir}/${NAME}" overwrite="true" verbose="${verbose}" failonerror="false">
<fileset dir="${source}/${PREFIX}/modules/${NAME}"/>
</copy>
<copy todir="${builddir}/${NAME}/media" overwrite="true" verbose="${verbose}" failonerror="false">
<fileset dir="${source}/media/${NAME}"/>
</copy>
<copy todir="${builddir}/${NAME}/language" overwrite="true" verbose="${verbose}" failonerror="false" flatten="true">
<fileset dir="${source}/${PREFIX}/language">
<include name="*/*${NAME}.ini" />
</fileset>
</copy>
</target>
<target name="buildtemplate" depends="_clean">
<copy todir="${builddir}/${NAME}" overwrite="true" verbose="${verbose}" failonerror="false">
<fileset dir="${source}/${PREFIX}/templates/${NAME}"/>
</copy>
</target>
<target name="buildcomponent" depends="_clean">
<mkdir dir="${builddir}/${NAME}/site"/>
<mkdir dir="${builddir}/${NAME}/admin"/>
<mkdir dir="${builddir}/${NAME}/admin/sql"/>
<mkdir dir="${builddir}/${NAME}/media"/>
<mkdir dir="${builddir}/${NAME}/language"/>
<mkdir dir="${builddir}/${NAME}/language/admin"/>
<mkdir dir="${builddir}/${NAME}/language/site"/>
<copy todir="${builddir}/${NAME}/media" overwrite="true" verbose="${verbose}" failonerror="false">
<fileset dir="${source}/media/${NAME}"/>
</copy>
<copy todir="${builddir}/${NAME}/admin" overwrite="true" verbose="${verbose}">
<fileset dir="${source}/administrator/components/${NAME}"/>
</copy>
<copy todir="${builddir}/${NAME}/language/admin" overwrite="true" verbose="${verbose}" flatten="true">
<fileset dir="${source}/administrator/language">
<exclude name="overrides/*"/>
<exclude name="pdf_fonts/*"/>
<include name="**/*${NAME}*.ini"/>
</fileset>
</copy>
<copy todir="${builddir}/${NAME}/site" overwrite="true" verbose="${verbose}">
<fileset dir="${source}/components/${NAME}"/>
</copy>
<copy todir="${builddir}/${NAME}/language/site" overwrite="true" verbose="${verbose}" flatten="true">
<fileset dir="${source}/language">
<exclude name="overrides/*"/>
<exclude name="pdf_fonts/*"/>
<include name="**/*${NAME}*.ini" />
</fileset>
</copy>
<move file="${builddir}/${NAME}/admin/${NAME}.xml" todir="${builddir}/${NAME}" verbose="${verbose}"/>
<move file="${builddir}/${NAME}/admin/uninstall.${NAME}.php" todir="${builddir}/${NAME}" verbose="${verbose}" failonerror="false"/>
<move file="${builddir}/${NAME}/admin/install.${NAME}.php" todir="${builddir}/${NAME}" verbose="${verbose}" failonerror="false"/>
<move todir="${builddir}/${NAME}/admin/sql" verbose="${verbose}">
<fileset dir="${builddir}/${NAME}/admin">
<include name="*.sql"/>
</fileset>
</move>
</target>
</project>
Пример рабочего процесса
* Испытание установки Joomla 1.5
* Местные проверки SVN вашего расширения репозиторий, содержащий расширений в структуре, как прилагаемый пример
* Выполнить "АНТ-F com_helloworld.xml пакет", который строит расширение в указанный каталог релиз
* Установите расширение на полигоне Joomla
* Используйте проекта полигона для разработки расширения и отладка его
* При внесении изменений, запустить 'муравей-F com_helloworld.xml построить синхронизации "сначала построить временное дерево в указанной папки сборки, то цель" Синхронизация "будет синхронизировать изменения между каталог для сборки и расширения каталога в хранилище
* Проверьте изменения и сделать SVN Commit
* Теперь вы можете либо пакет с расширением "пакет таргетинг", либо продолжить развитие на полигоне до нового совершить должно быть сделано
