我自己不久前也做过这种事。我使用以下三个链接来设置我的开发结构:
我现在得到的是一个单独的 Eclipse 项目,用于我的本地 Joomla 安装和每个 Joomla 扩展/模板。在我使用 Git 的每个扩展上,而不是 Joomla 安装本身。
每次我对扩展进行更改时,我都会使用 Eclipse 构建器调用 Phing,将编辑后的文件复制到我的 Joomla 安装中。这样,我可以在本地测试更改。当我准备好将扩展部署到远程站点时,我使用 Phing 构建 zip 包,以便我可以使用 Joomla 扩展管理器手动安装它们。
请注意,我使用的是 Windows,但我认为这对于其他操作系统也是一个很好的解决方案。用Eclipse做编辑器也不错,有代码补全等。我以前用过Notepad++。
我的扩展文件夹结构:
com_extensionname
- backend
- assets
- controllers
- helpers
- language
- models
- sql
- tables
- views
- access.xml
- extensionname.php
- config.xml
- controller.php
- index.html
- router.php
- LICENSE.txt
- frontend
- assets
- controllers
- helpers
- language
- models
- views
- extensionname.php
- controller.php
- index.html
- router.php
- build.xml
- extensionname.xml
运行以下文件的 Eclipse 外部工具:
Location: Path to phing.bat
Working Directory: ${project_loc}
Arguments: create_packages (This only argument only goes to the "Create packages"-tool
Phing xml 文件 (build.xml) 示例:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Project Name" default="copy_to_test" basedir=".">
<property name="test" value="YOUR PATH TO LOCAL JOOMLA INSTALLATION" override="true" />
<property name="src" value="${project.basedir}" override="true"/>
<!-- Package properties -->
<property name="package_path" value="PATH WHERE PACKAGES SHOULD GO" override="true" />
<property name="package_name" value="com_YOUREXTENSION" override="true" />
<!-- Files -->
<fileset dir="./frontend" id="frontend_files">
<include name="**" />
<exclude name="language/**" />
</fileset>
<fileset dir="./backend" id="backend_files">
<include name="**" />
<exclude name="language/**" />
<exclude name="packages/**" />
</fileset>
<!-- Language files -->
<fileset dir="./frontend/language" id="frontend_language_files">
<include name="**" />
</fileset>
<fileset dir="./backend/language" id="backend_language_files">
<include name="**" />
</fileset>
<!-- All files (for packaging) -->
<fileset dir="${src}" id="allfiles">
<include name="**" />
<exclude name="backend/packages/**" />
<exclude name=".**" />
</fileset>
<!-- Target: Copy to test -->
<target name="copy_to_test" description="Copies files to test project.">
<echo message="Running build.xml. Copying files from dev to test..." />
<!-- Manifest file -->
<copy file="MANIFEST_FILE.xml" todir="${test}/administrator/components/com_YOUREXTENSION" />
<!-- Component files -->
<copy todir="${test}/components/com_YOUREXTENSION">
<fileset refid="frontend_files" />
</copy>
<copy todir="${test}/administrator/components/com_YOUREXTENSION">
<fileset refid="backend_files" />
</copy>
<!-- Language files -->
<copy todir="${test}/language/en-GB">
<fileset refid="frontend_language_files" />
</copy>
<copy todir="${test}/administrator/language/en-GB">
<fileset refid="backend_language_files" />
</copy>
</target>
<!-- Target: Create packages -->
<target name="create_packages" description="Generates package files">
<echo message="Running build.xml. Generating package files" />
<!-- <propertyprompt propertyName="package_version" defaultValue="" promptText="Enter version" /> -->
<xmlproperty file="MANIFEST_FILE.xml"/>
<delete file="${package_path}/${package_name}-${extension.version}.zip" />
<delete file="${package_path}/${package_name}-${extension.version}.tar.gz" />
<zip destfile="${package_path}/${package_name}-${extension.version}.zip">
<fileset refid="allfiles" />
</zip>
<tar destfile="${package_path}/${package_name}-${extension.version}.tar.gz" compression="gzip">
<fileset refid="allfiles" />
</tar>
</target>