引言:
很高兴百度、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”参数的说明。
(完结)