Joomla Custom Compoment Dev Env:热部署 [英] Joomla Custom Compoment Dev Env : Hot Deployment

查看:144
本文介绍了Joomla Custom Compoment Dev Env:热部署的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我打算开发一个Joomla自定义组件并将这些文件存储在一个git仓库中。我的git项目的结构将模仿部署的joomla结构

 < root> 
- 管理员
- 组件
--com_abc
- 组件
--com_abc
- 模块
--com_abc
- 插件
-com_abc

与每次复制/压缩组件的php / html文件我想尝试使用joomla根文件夹作为我的git项目的根目录。我会使用git忽略功能来排除属于joomla核心项目的文件。我想知道有人做过类似的事情,你最初如何部署你的组件。是只是使用Joomla Extension Manager并将目录指向joomla root dir?

解决方案

我自己做了这个不久前的好心情。我使用了以下三个链接来设置我的开发结构:



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



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



请注意,我在Windows上,但我认为这也是其他操作系统的一个很好的解决方案。使用Eclipse作为编辑器也很好,代码完成等。我以前使用过Notepad ++。

我的扩展文件夹结构:

  com_extensionname 
- 后端
- 资产
- 控制器
- 助手
- 语言
- models
- sql
- 表
- 视图
- access.xml
- extensionname.php
- config.xml
- controller.php
- index.html
- router.php
- LICENSE.txt
- 前端
- 资产
- 控制器
- 助手
- 语言
- 模型
- 视图
- extensionname.php
- controller.php
- index.html
- router.php
- build.xml
- extensionname.xml

<强> Eclipse的分机ernal工具来运行以下文件:

 位置:phing.bat的路径
工作目录: $ {project_loc}
参数:create_packages(这个唯一的参数仅用于Create packages - tool

Phing xml文件(build.xml)的示例:

 <?xml version =1.0encoding =UTF-8?> 
< project name =Project Namedefault =copy_to_testbasedir =。>
< property name =srcvalue =$ {project.basedir}override =true/>

<! - Package properties - >
< property name =package_pathvalue =PATH WHERE PACKAGES SHOULD GOoverride =true/>
< property name =package_namevalue =com_YOUREXTENSIONoverride =true/>

<! - 文件 - >
< fileset dir =./frontendid =frontend_files>
< include name =**/>
< exclude name =language / **/>
< / fileset>
< fileset dir =./ backendid =backend_files>
< include name =**/>
< exclude name =language / **/>
< exclude name =packages / **/>
< / fileset>

<! - 语言文件 - >
< fileset dir =./ frontend / languageid =frontend_language_files>
< include name =**/>
< / fileset>
< fileset dir =./ backend / languageid =backend_language_files>
< include name =**/>
< / fileset>

<! - 所有文件(用于包装) - >
< fileset dir =$ {src}id =allfiles>
< include name =**/>
< exclude name =backend / packages / **/>
< exclude name =。**/>
< / fileset>

<! - 目标:复制到测试 - >
< target name =copy_to_testdescription =将文件复制到测试项目。>
< echo message =正在运行build.xml。将文件从dev复制到测试.../>

<! - - 清单文件 - >
< copy file =MANIFEST_FILE.xmltodir =$ {test} / administrator / components / com_YOUREXTENSION/>

<! - 组件文件 - >
< copy todir =$ {test} / components / com_YOUREXTENSION>
< fileset refid =frontend_files/>
< / copy>
< copy todir =$ {test} / administrator / components / com_YOUREXTENSION>
< fileset refid =backend_files/>
< / copy>

<! - 语言文件 - >
< copy todir =$ {test} / language / en-GB>
< fileset refid =frontend_language_files/>
< / copy>
< copy todir =$ {test} / administrator / language / zh-CN>
< fileset refid =backend_language_files/>
< / copy>
< / target>

<! - 目标:创建包 - >
< target name =create_packagesdescription =生成包文件>
< echo message =运行build.xml。生成包文件/>

<! - < propertyprompt propertyName =package_versiondefaultValue =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.gzcompression =gzip>
< fileset refid =allfiles/>
< / tar>
< / target>


I'm planning on developing a Joomla custom component and storing the files in a git repo. The structure of my git project will mimic the deployed joomla struture

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

Rather than having to copy/zip the php/html files for the component each time i'd like to try and use the joomla root folder as the root for my git project. I'd use the git ignore feature to exclude files that belong to the joomla core project. I'm wondering has anybody done something similar and how do you initially deploy your component. Is is just a case of using the Joomla Extension Manager and pointing the directory to the joomla root dir?

解决方案

I myself did this kind thing not long ago. I used the following three links to setup my development structure:

What I now got is a separate Eclipse project for my local Joomla installation and every Joomla extension/template. On every extension I use Git, but not the Joomla installation itself.

Every time I make a change to a extension, I use a Eclipse builder to call on Phing that copies the edited files to my Joomla installation. This way, I can test the changes locally. When I'm ready to deploy the extensions to a remote site, I use Phing to build the zip packages so that I can manually install them using the Joomla Extension Manager.

Note that I'm on Windows and but I think it's a good solution for other operating systems too. Using Eclipse as editor is also nice, with code completion etc. I used Notepad++ before.

My extensions folder structure:

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

The Eclipse external tool to run the following file:

Location: Path to phing.bat
Working Directory: ${project_loc}
Arguments: create_packages (This only argument only goes to the "Create packages"-tool

Example of Phing xml file (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>

这篇关于Joomla Custom Compoment Dev Env:热部署的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆