autoscript packed 文件地址:http://pan.baidu.com/s/1dDvgcO5
如果需要项目源码的话,可以留下邮箱,先声明一下,该工具主要是为了实现自动同步输出代码类文件的功能,所以代码写得并不是很规范什么的,没太大的参考意义,主要还是工具的实用性。
数据类和常量的配置基本就是前面所说明的那些了,现在来说一下怎么执行配置文件。执行配置文件需要写一个批处理文件,格式如下
java -classpath ./lib/*; AutoScript -?
这是一个执行 java 程序的标准语句,当然,再执行命令前是需要设置好 java 的环境变量的。
classpath 参数指定执行 java 类所需要的包依赖,AutoScript 指需要执行的 java 类,最后是 AutoScript 脚本类所需要的参数,参数的取值为:
-? : 表示帮助,输出 AutoScript 可以接收的参数,也可以用 -help 代替,当有该参数时,会忽略其它参数
-module : 表示需要执行什么功能模块,合法的参数为 -module macro(表示输出常量),-module object(表示输出 java 和 as3 公用数据类),-module database(表示输出 java 和 as3 公用数据类,以及 mysql 的建表脚本)
-template : freemaker 需要的输出文件模板路径,即 packed 文件夹下的 templates 文件夹
-config : 表示相关功能模块的配置文件路径,macro 功能模块只能接收一个配置文件路径,object 和 database 功能模块可以接收多个配置文件路径
-javaoutput : 表示 java 类文件的输出目录,可以指定为相对路径,也可以是绝对路径。如果不指定该参数,则不输出 java 相关文件
-javapackage : 表示 java 类文件的包名
-as3output : 表示 as3 类文件的输出目录,可以指定为相对路径,也可以是绝对路径。如果不指定该参数,则不输出 as3 相关文件
-javapackage : 表示 java 类文件的包名
-as3alias : as3 与 java 数据类的映射文件类名
-databaseoutput : mysql 脚本文件输出目录。如果不指定该参数,则不输出数据库 mysql 相关文件
-databasename : mysql 脚本文件数据库名字
每个执行命令都有固定格式 : java -classpath ./lib/*; AutoScript -template ./templates/ -module xxx
功能模块 -module macro 需要后续参数 -config xxx -javaoutput xxx -javapackage xxx -as3output xxx -as3package xxx,其中 -config 参数是必须的
功能模块 -module object 需要后续参数 -config xxx xxx -javaoutput xxx -javapackage xxx -as3output xxx -as3package xxx -as3alias xxx,其中 -config 参数是必须的
功能模块 -module database 需要后续参数 -config xxx xxx -javaoutput
xxx -javapackage xxx -as3output xxx -as3package xxx -as3alias xxx
-databaseoutput xxx -databasename xxx,其中 -config 参数是必须的
需要注意的是,输出数据类时最好用一条批处理,-config 参数指定所有数据类配置文件,这样 -as3alias 就只用生成一个,在客户端初始化时,也就只用调用一次数据类的映射类。但是功能模块 object 和 database 输出的数据类的映射没办法输出到一个 as3alias 映射类中,所以在 object 功能模块和 database 功能模块中的 -as3alias 参数值最好不要相同。
说完了,可能还是有些不理解,下面说明一下 packed 文件夹下的 execute_sample.bat 脚本吧。
::打印 AutoScript 支持的命令 java -classpath ./lib/*; AutoScript -?
查看 AutoScript 支持的参数,如图
::输出 宏文件 java -classpath ./lib/*; AutoScript -template ./templates/ ^ -module macro ^ -config ./samples/macrosSample.xml ^ -javaoutput ./output/java/com/vo/ ^ -javapackage com.vo ^ -as3output ./output/as3/com/vo/ ^ -as3package com.vo
输出 packed/samples 文件夹下的常量配置文件 macrosSample.xml(每行末的 ^ 符号是 windows 的批处理文件中连接 2 行的转义符)
-module 指定了输出常量功能模块
-config 参数指定了常量配置文件 samples 目录下的 macrosSample.xml 文件
-javaoutput 指定了输出 java 常量类文件的目录为 packed 文件夹下的 output/java/com/vo/
-javapackage 指定了 java 常量类的包路径
-as3output 指定了输出 as3 常量类文件的目录为 packed 文件夹下的 output/as3/com/vo/
-as3package 指定了 as3 常量类的包路径
输出文件目录如图
::输出类文件 java -classpath ./lib/*; AutoScript -template ./templates/ ^ -module object ^ -config ./samples/objectsSample.xml ./samples/objectsSample2.xml ^ -javaoutput ./output/java/com/vo/ ^ -javapackage com.vo ^ -as3output ./output/as3/com/vo/ ^ -as3package com.vo ^ -as3alias AliasRegister
输出 packed/samples 文件夹下的 objectsSample.xml 和 objectsSample2.xml。
-module 指定输出 as3 和 java 数据类同步功能模块
-config 指定了两个数据类配置文件 objectsSample.xml 和 objectsSample2.xml
-as3alias 指定了 as3 和 java 数据类映射类,该映射类用于客户端,在客户端初始化时需要调用 AliasRegister.register(),使从服务端获取的对象能转换成对应的 as3 对象
package com.vo { import flash.net.registerClassAlias; /** * 注册与后端对应的实体类 * 2014-05-24 17:56:25 */ public class AliasRegister { //============================================================================ //PROPERTY //============================================================================ /** 是否已注册 */ private static var $registered:Boolean = false; //============================================================================ //PUBLIC //============================================================================ /** 注册别名 */ public static function register():void { if ($registered) return; $registered = true; registerClassAlias("com.vo.TUserVO", com.vo.TUserVO); } } }
其它参数同上,输出文件目录如图
::输出数据库脚本文件 java -classpath ./lib/*; AutoScript -template ./templates/ ^ -module database ^ -config ./samples/databaseSample.xml ^ -javaoutput ./output/java/com/vo/ ^ -javapackage com.vo ^ -as3output ./output/as3/com/vo/ ^ -as3package com.vo ^ -as3alias AliasRegister ^ -databaseoutput ./output/java/com/vo/ ^ -databasename mysql_database
输出 packed/samples 文件夹下的 databaseSample.xml。
-module 指定了输出 as3、java 和 mysql 脚本同步功能模块
-databaseoutput 指定 mysql 脚本输出到 packed/output/java/com/vo/ 下
-databasename 指定了mysql 数据库名字,以及脚本文件名为 mysql_database
输出目录如图