Zeroc ICE中间件slice2java的ant脚本(v1u0_0)

引言:

    很高兴百度、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”参数的说明。



    (完结)




   

猜你喜欢

转载自zhaoningbo.iteye.com/blog/1135564