2012-02-16 47 views
0

我打算开发一个Joomla自定义组件并将文件存储在一个git仓库中。我的Git项目将模拟部署的Joomla结构strutureJoomla自定义组件开发环境:热部署

<root> 
-administrator 
    -components 
    -com_abc 
-components 
    -com_abc 
-modules 
    -com_abc 
-plugins 
    -com_abc 

而不是必须复制/邮政编码为组件的PHP/HTML文件每次我想尝试和使用的Joomla根文件夹中我的git项目的根。我会使用git忽略功能来排除属于joomla核心项目的文件。我想知道有人做过类似的事情,你最初如何部署你的组件。仅仅是使用Joomla Extension Manager并将目录指向joomla root dir的情况?

回答

2

我自己不久前做过这种事情。我用以下三个环节设置我的发展格局:

我现在得到的是对我的本地安装Joomla和每一个的Joomla一个单独的Eclipse项目扩展/模板。在每个扩展中,我使用Git,但不是Joomla安装本身。

每当我对扩展进行更改时,我都会使用Eclipse构建器来调用Phing,将编辑后的文件复制到我的Joomla安装中。这样,我可以在本地测试更改。当我准备将扩展部署到远程站点时,我使用Phing构建zip包,以便我可以使用Joomla Extension Manager手动安装它们。

请注意,我在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>