ofbiz的ant命令创建模块
2017-03-30 23:19
330 查看
1.简介说明
一般我们在hot-deploy下部署应用是,可以通过ant的create-component这个命令来创建,这种方法的好处是自动创建的会节省自己很多时间,并且避免一些不必要的错误,下面就从简述一下ant构建,以及模块的创建声明:禁止转载,不是因为文章好不好,而是对于百度搜索,一搜一大片一样,很烦
2.软件版本
ofbiz-trunk3.ant命令
ant是一种自动构建工具,其环境配置跟java环境差不多,配置全局变量后,运行xml文件对应的target就可以执行相关的操作。但ant不是我主要要讲的东西,只简要介绍一些基本语法:
target:是一个容器,指令集合,一个事务
copy:拷贝单个文件到指定路径
delete:删除文件
参考资料:http://blog.csdn.net/linchaolong/article/details/45057257
4.模块创建
运行buil.xmld下的create-component,而后输入对应值然后 击ok对应的模块就会创建出来,文件结构效果如下:
|____build.xml |____config | |____resourec-nameUiLabels.xml |____data | |____helpdata | | |____HELP_resourec-name.xml | |____resourec-nameDemoData.xml | |____resourec-nameSecurityGroupDemoData.xml | |____resourec-nameSecurityPermissionSeedData.xml | |____resourec-nameTypeData.xml |____documents | |____resourec-name.xml |____dtd |____entitydef | |____entitymodel.xml |____lib |____ofbiz-component.xml |____patches | |____production | |____qa | |____test |____script |____servicedef | |____services.xml |____src |____testdef | |____resourec-nameTests.xml |____webapp | |____webapp-name | | |____error | | | |____error.jsp | | |____index.jsp | | |____WEB-INF | | | |____actions | | | |____controller.xml | | | |____web.xml |____widget | |____CommonScreens.xml | |____resourec-nameForms.xml | |____resourec-nameMenus.xml | |____resourec-nameScreens.xml
5.create- component命令简述
<target name="create-component" description="Create the layout of an OFBiz component in the hot-deployfolder."> <!--提供组件名资源文件名等输入文本框--> <inputaddproperty="component-name"message="Component name:(e.g. mycomponent) [Mandatory]"/> <input addproperty="component-resource-name" message="Component resource name: (e.g. MyComponent) [Mandatory]"/> <input addproperty="webapp-name" message="Webapp name: (e.g. mycomponent) [Mandatory]"/> <input addproperty="base-permission" message="Base permission: (e.g. MYCOMPONENT) [Mandatory]"/> <echo>Thefollowing hot-deploy component will be created: Name: ${component-name} Resource Name:${component-resource-name} Webapp Name: ${webapp-name} Base permission:${base-permission} Folder:${basedir}/hot-deploy/${component-name} </echo> <!--确认组件是否被创建--> <inputaddproperty="confirm-component-creation"message="Confirm: " defaultvalue="N" validargs="Y,N,y,n"/> <!--进行信息验证--> <failmessage="Component creationcancelled by the user."> <condition> <equals arg1="${confirm-component-creation}" arg2="N" casesensitive="false"/> </condition> </fail> <fail message="Component name is mandatory"> <condition> <equals arg1="${component-name}" arg2="" casesensitive="false" trim="yes"/> </condition> </fail> <fail message="Resource name is mandatory"> <condition> <equals arg1="${component-resource-name}" arg2="" casesensitive="false" trim="yes"/> </condition> </fail> <fail message="Webapp name is mandatory"> <condition> <equals arg1="${webapp-name}" arg2="" casesensitive="false" trim="yes"/> </condition> </fail> <!--过滤器集,将文件中具体内容进行转化--> <filtersetid="replacePlaceholders"> <filter token="component-name" value="${component-name}"/> <filter token="component-resource-name" value="${component-resource-name}"/> <filter token="base-permission" value="${base-permission!}"/> <filter token="webapp-name" value="${webapp-name}"/> </filterset> <!--创建文件--> <mkdirdir="${basedir}/hot-deploy/${component-name}"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/config"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/data"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/data/helpdata"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/dtd"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/documents"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/entitydef"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/lib"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/patches"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/patches/test"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/patches/qa"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/patches/production"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/script"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/servicedef"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/src"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/testdef"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/webapp"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/webapp/${webapp-name}"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/webapp/${webapp-name}/error"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/webapp/${webapp-name}/WEB-INF"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/webapp/${webapp-name}/WEB-INF/actions"/> <mkdir dir="${basedir}/hot-deploy/${component-name}/widget/"/> <1--拷贝文件模板--> <copyfile="${basedir}/framework/resources/templates/ofbiz-component.xml"tofile="${basedir}/hot-deploy/${component-name}/ofbiz-component.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/build.xml" tofile="${basedir}/hot-deploy/${component-name}/build.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy fi 4000 le="${basedir}/framework/resources/templates/TypeData.xml" tofile="${basedir}/hot-deploy/${component-name}/data/${component-resource-name}TypeData.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/SecurityPermissionSeedData.xml"tofile="${basedir}/hot-deploy/${component-name}/data/${component-resource-name}SecurityPermissionSeedData.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/SecurityGroupDemoData.xml"tofile="${basedir}/hot-deploy/${component-name}/data/${component-resource-name}SecurityGroupDemoData.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/DemoData.xml" tofile="${basedir}/hot-deploy/${component-name}/data/${component-resource-name}DemoData.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/HELP.xml" tofile="${basedir}/hot-deploy/${component-name}/data/helpdata/HELP_${component-resource-name}.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/document.xml" tofile="${basedir}/hot-deploy/${component-name}/documents/${component-resource-name}.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/entitymodel.xml" tofile="${basedir}/hot-deploy/${component-name}/entitydef/entitymodel.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/services.xml" tofile="${basedir}/hot-deploy/${component-name}/servicedef/services.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/Tests.xml" tofile="${basedir}/hot-deploy/${component-name}/testdef/${component-resource-name}Tests.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/UiLabels.xml" tofile="${basedir}/hot-deploy/${component-name}/config/${component-resource-name}UiLabels.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/index.jsp" tofile="${basedir}/hot-deploy/${component-name}/webapp/${webapp-name}/index.jsp"encoding="iso-8859-1"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/error.jsp" tofile="${basedir}/hot-deploy/${component-name}/webapp/${webapp-name}/error/error.jsp"encoding="iso-8859-1"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/controller.xml" tofile="${basedir}/hot-deploy/${component-name}/webapp/${webapp-name}/WEB-INF/controller.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/web.xml" tofile="${basedir}/hot-deploy/${component-name}/webapp/${webapp-name}/WEB-INF/web.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/CommonScreens.xml" tofile="${basedir}/hot-deploy/${component-name}/widget/CommonScreens.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/Screens.xml" tofile="${basedir}/hot-deploy/${component-name}/widget/${component-resource-name}Screens.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/Menus.xml" tofile="${basedir}/hot-deploy/${component-name}/widget/${component-resource-name}Menus.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <copy file="${basedir}/framework/resources/templates/Forms.xml" tofile="${basedir}/hot-deploy/${component-name}/widget/${component-resource-name}Forms.xml"encoding="utf-8"> <filterset refid="replacePlaceholders"/> </copy> <echo>Componentsuccessfully created in folder ${basedir}/hot-deploy/${component-name}. Restart OFBiz and then visitthe URL: http://localhost:8080/${webapp-name} </echo> </target>
6.文件值替换(过滤器集)
刚才上文输入的文本框值,不仅在创建文件是路径值替换,同时也替换里面具体的值,就拿ofbiz-component文件讲述文件位置
/project/ofbiz/ofbiz-trunk/framework/resources/templates/ofbiz-component.xml
<?xml version="1.0" encoding="UTF-8"?> <ofbiz-component name="@component-name@" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd"> <!-- define resource loaders; most common is to use the component resource loader --> <resource-loader name="main" type="component"/> <!-- place the config directory on the classpath to access configuration files --> <classpath type="dir" location="config"/> <classpath type="dir" location="dtd"/> <!-- load single or multiple external libraries --> <classpath type="jar" location="build/lib/*"/> <classpath type="jar" location="lib/*"/> <!-- entity resources: model(s), eca(s), group, and data definitions --> <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/> <!-- <entity-resource type="eca" reader-name="main" loader="main" location="entitydef/eecas.xml"/> --> <entity-resource type="data" reader-name="seed" loader="main" location="data/@component-resource-name@TypeData.xml"/> <entity-resource type="data" reader-name="seed" loader="main" location="data/@component-resource-name@SecurityPermissionSeedData.xml"/> <entity-resource type="data" reader-name="demo" loader="main" location="data/@component-resource-name@SecurityGroupDemoData.xml"/> <entity-resource type="data" reader-name="demo" loader="main" location="data/@component-resource-name@DemoData.xml"/> <!-- service resources: model(s), eca(s) and group definitions --> <service-resource type="model" loader="main" location="servicedef/services.xml"/> <!-- <service-resource type="eca" loader="main" location="servicedef/secas.xml"/> <service-resource type="group" loader="main" location="servicedef/groups.xml"/> --> <test-suite loader="main" location="testdef/@component-resource-name@Tests.xml"/> <!-- web applications; will be mounted when using the embedded container --> <webapp name="@webapp-name@" title="@component-resource-name@" server="default-server" location="webapp/@webapp-name@" base-permission="OFBTOOLS,@base-permission@" mount-point="/@webapp-name@"/> </ofbiz-component>
效果代码:
<?xml version="1.0" encoding="UTF-8"?>
<ofbiz-component name="component-name"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">
<!-- define resource loaders; most common is to use the component resource loader -->
<resource-loader name="main" type="component"/>
<!-- place the config directory on the classpath to access configuration files -->
<classpath type="dir" location="config"/>
<classpath type="dir" location="dtd"/>
<!-- load single or multiple external libraries -->
<classpath type="jar" location="build/lib/*"/>
<classpath type="jar" location="lib/*"/>
<!-- entity resources: model(s), eca(s), group, and data definitions -->
<entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/>
<!-- <entity-resource type="eca" reader-name="main" loader="main" location="entitydef/eecas.xml"/> -->
<entity-resource type="data" reader-name="seed" loader="main" location="data/resourec-nameTypeData.xml"/>
<entity-resource type="data" reader-name="seed" loader="main" location="data/resourec-nameSecurityPermissionSeedData.xml"/>
<entity-resource type="data" reader-name="demo" loader="main" location="data/resourec-nameSecurityGroupDemoData.xml"/>
<entity-resource type="data" reader-name="demo" loader="main" location="data/resourec-nameDemoData.xml"/>
<!-- service resources: model(s), eca(s) and group definitions -->
<service-resource type="model" loader="main" location="servicedef/services.xml"/>
<!--
<service-resource type="eca" loader="main" location="servicedef/secas.xml"/>
<service-resource type="group" loader="main" location="servicedef/groups.xml"/>
-->
<test-suite loader="main" location="testdef/resourec-nameTests.xml"/>
<!-- web applications; will be mounted when using the embedded container -->
<webapp name="webapp-name"
title="resourec-name"
server="default-server"
location="webapp/webapp-name"
base-permission="OFBTOOLS,${base-permission!}"
mount-point="/webapp-name"/>
</ofbiz-component>
就是这些值都被替换成了开始文本框的值,从而实现文件的拷贝,其它模板文件也在其同级目录下。
7.总结
这就是创建组件的大概逻辑,详情研究代码,也可以自己模仿其定制自己想创建的模块结构,这样就不必手动创建,是个很方便的过程
相关文章推荐
- Opentaps 1.5.0安装配置笔记(附ant命令源码安装)及ofbiz 12.04.02安装特别注意事项
- 使用dos命令创建多模块Maven项目
- 创建Perl模块命令
- OFBiz进阶之HelloWorld(一)创建热部署模块
- maven命令创建多模块项目
- 使用dos命令创建多模块Maven项目
- 使用maven命令创建java多模块工程
- maven 命令创建多模块工程
- 炎川 成长日记 OFBiz进阶之HelloWorld(一)创建热部署模块
- 炎川 成长日记 OFBiz进阶之HelloWorld(二)创建热部署模块
- YII linux 下用命令创建应用及分模块创建应用
- OFBiz进阶之HelloWorld(二)创建热部署模块
- 使用dos命令创建多模块Maven项目
- Ofbiz模块加载机制即创建独立模块(脱离热部署)
- 创建用树形列表显示文件夹目录信息的功能模块
- OpenCms模块创建图解
- DotNetNuke 4.5: 如何创建支持Asp.net Ajax 的DNN模块
- ant命令摘要
- 没有检测可创建的公有类模块。按 F1 键以获取多的信息
- ASP.NET 实践:HTTP 模块的创建与配置