很高兴百度、google上搜到"slice2java ant"时,只有我这一篇帖子。有网友邮件,表示目前版本未能支持"$ slice2java -DIR ..." 这样的句法。今天有点时间,做了一下升级,如有其他问题,欢迎来此追问。中英文均可,不用刻意找翻译工具,好意心领了。
升级版可以在文尾下载到。
请留意[modify]**又增加一处,共两处。
原贴: Zero ICE中间件slice2java的ant脚本
正文:
本版支持了如下的句法(命令提示符$后无换行是空格):
$ D:\kits\ice\ZeroC\Ice-3.4.1\bin\slice2java --output-dir D:\demo\workspace\numberIceSliceDemo\generated -ID:\demo\workspace\numberIceSliceDemo\slice D:\demo\workspace\numberIceSliceDemo\slice\com\number\demoicegrid\simple\Nihao.ice D:\demo\workspace\numberIceSliceDemo\slice\com\number\except\ExceptionDef.ice
功能请参看原贴(地址引言提供)。注释比较齐全了~。= 。直接上代码。
(1)slice2java ant小脚本
<?xml version="1.0" encoding="utf-8"?> <!-- ================ --> <!-- Auto slice2java. --> <!-- by:zhaoningbo, --> <!-- version: v1.0 --> <!-- email:[email protected] --> <!-- ================ --> <project name="autoBuild_slice2java" default="slice2java.compile" basedir="."> <!-- defind all parameters --> <property name="slice.dir" value="slice"> </property> <property name="generated.dir" value="generated"> </property> <!-- [modify]** Set the SETUP_HOME of the ICE.** --> <property name="ice.home.dir" value="D:/kits/ice/ZeroC/Ice-3.4.1"> </property> <!-- [modify]** Set the SLICE_HOME of the ICE.** --> <property name="slice.home.dir" value="D:/demo/workspace/numberIceSliceDemo/slice/"> </property> <!-- prepare environment and 'slice2java' command support. --> <target name="preDefine" description="Slice: add all prepared defines."> <mkdir dir="${generated.dir}" /> <taskdef name="slice2java" classpath="${ice.home.dir}/lib/ant-ice.jar" classname="Slice2JavaTask"> </taskdef> </target> <!-- run slice2java --> <target name="slice2java.compile" depends="preDefine" description="Slice: compile all *.ice."> <slice2java outputdir="${generated.dir}" includepath="${slice.home.dir}"> <fileset dir="${slice.dir}"> <include name="**/*.ice" /> </fileset> </slice2java> </target> <!-- clear slice2java --> <target name="slice2java.clear" description="Slice: delete generated directory to clear *.java from *.ice."> <delete includeemptydirs="true"> <fileset dir="${generated.dir}" includes="**/*"> </fileset> </delete> </target> </project> <!-- Update Logs --> <!-- 110729: contain 'includepath' to use the '-IDIR'(the slice2java --> <!-- option). now we support the '#incluce <file.ice>' sytax. -->
(2)测试的slice
文件“D:\demo\workspace\numberIceSliceDemo\slice\com\number\demoicegrid\simple\Nihao.ice”
/* * by: zhaoningbo * date: 2011-07-28 14:32 */ #ifndef ICEGRID_SIMPLE_HELLO_DEF #define ICEGRID_SIMPLE_HELLO_DEF // reference the Exception Definition. #include <com/number/except/ExceptionDef.ice> module com{ module number{ module demoicegrid{ module simple{ interface Nihao{ string sayNihao() throws com::number::except::UGenericException; void shutdown(); }; }; }; }; }; #endif
文件“D:\demo\workspace\numberIceSliceDemo\slice\com\number\except\ExceptionDef.ice”
/* * by: zhaoningbo * date: 2011-07-25 15:49 */ #ifndef EXCEPTION_COMMON_DEF #define EXCEPTION_COMMON_DEF module com{ module number{ module except{ exception UGenericException{ string cause; }; exception UNullParamException extends UGenericException{ string msg; }; }; }; }; #endif
说明:
当:
(1)slice的*.ice定义中使用#include <fullfilename.ice>不便迁移;
(2)不便使用“预定义”方式解决(例如如异常不能预定义);
(3)项目结构复杂,除专人花大量时间外,队友很难维护好按顺序编译;
时,
建议参考“$ slice2java -I<DIR> XXX.ice”参数的说明。
(完结)