针对项目结构如下的例子
第一个是ant典型的例子,项目可以直接复制过去使用。 第二个是复杂一点的例子。
<?xml version="1.0" encoding="UTF-8"?> <!-- storm项目名称,ant默认动作--> <project name="storm_transactional_count" default="buildJar" basedir="."> <property file="build.properties" /> <property name="version" value="1.0.0"/> <property name="lib.dir" value="lib"/> <property name="src.dir" value="src"/> <property name="resources.dir" value="resources"/> <property name="classes.dir" value="bin"/> <property name="output.dir" value="out"/> <property name="jarname" value="${ant.project.name}"/> <property name="mainclass" value="com.ck.MainTopoCount"/> <property name="jdk.version" value="1.7"/> <!-- 第三方jar包的路径 --> <path id="lib-classpath"> <fileset dir="${lib.dir}"> <include name="**/*.jar"/> </fileset> </path> <!-- 初始化工作,如创建目录等 --> <target name="init"> <delete dir="${output.dir}" includes="*.*" /> <mkdir dir="${classes.dir}"/> <mkdir dir="${output.dir}"/> </target> <!-- 编译 --> <target name="compile" depends="init"> <javac srcdir="${src.dir}" destdir="${classes.dir}" source="${jdk.version}" target="${jdk.version}" > <compilerarg line="-encoding UTF-8"/> <classpath refid="lib-classpath"/> </javac> </target> <!--拷贝properties和XML文件到classes目录--> <target name="copyPropAndXML" depends="compile"> <copy todir="${classes.dir}" overwrite="true"> <fileset dir="${resources.dir}"> <include name="*.xml" /> <include name="*.properties" /> </fileset> </copy> </target> <!--打包开始,名字为jar,依赖任务为copyPropAndXML--> <target name="buildJar" depends="copyPropAndXML"> <pathconvert property="mf.classpath" pathsep=" "> <mapper> <chainedmapper> <!-- jar包文件只留文件名,去掉目录信息 --> <flattenmapper/> <!-- add lib/ prefix --> <globmapper from="*" to="lib/*"/> </chainedmapper> </mapper> <path refid="lib-classpath"/> </pathconvert> <!-- jar文件的输出路径,jar包名字 --> <jar destfile="${output.dir}/${jarname}.jar"><!-- basedir属性和下面的fileset功能是一样的 basedir="${classes.dir}" --> <manifest> <attribute name="Main-class" value="${mainclass}"/> <attribute name="Class-Path" value="."/> </manifest> <!-- jar包包含的文件夹--> <fileset dir="${classes.dir}"/> <!-- 定义哪些jar包需要一起打包,这个包可以在任何位置--> <zipfileset excludes="META-INF/*.SF" src="${lib.dir}/mysql-connector-java-5.1.28.jar"/> <zipfileset excludes="META-INF/*.SF" src="${lib.dir}/rabbitmq-client.jar"/> </jar> </target> <!--运行一下jar包,试试看效果--> <target name="runJar" > <!--其实这里就是运行jar命令,注意fork一定加上,不然不起作用--> <java jar="${jarfilename}" fork="true"/> </target> <!-- 清理 --> <target name="clean"> <delete dir="${output.dir}"/> <delete dir="${classes.dir}"/> </target> <!-- 此文件几个地方要注意改:项目名称,jdk版本,文件夹路径,主类名,需要打的包等等 --> </project>
<?xml version="1.0" encoding="UTF-8"?> <project name="storm" default="compile" basedir="."> <property file="build.properties" /> <property name="version" value="1.0.1" /> <property name="lib.dir" value="lib"/> <property name="src.dir" value="src"/> <property name="resources.dir" value="resources"/> <property name="classes.dir" value="bin"/> <property name="output.dir" value="out"/> <property name="jarname" value="${ant.project.name}"/> <property name="mainclass" value="com.cmsz.storm.MainTopology"/> <property name="jdk.version" value="1.6"/> <!-- 第三方jar包的路径 --> <path id="lib-classpath"> <fileset dir="${lib.dir}"> <include name="**/*.jar"/> </fileset> </path> <!-- 初始化工作,如创建目录等 --> <target name="init"> <delete dir="${output.dir}" includes="*.*" /> <mkdir dir="${classes.dir}"/> <mkdir dir="${output.dir}"/> </target> <!-- 编译 --> <target name="compile" depends="init"> <javac srcdir="${src.dir}" destdir="${classes.dir}" source="${jdk.version}" target="${jdk.version}" > <compilerarg line="-encoding UTF-8"/> <classpath refid="lib-classpath"/> </javac> </target> <!--拷贝properties和XML文件到classes目录--> <target name="copyPropAndXML" depends="compile"> <copy todir="${classes.dir}" overwrite="true"> <fileset dir="${resources.dir}"> <include name="*.xml" /> <include name="*.properties" /> <exclude name="config-dev.properties" /> <exclude name="config-test.properties" /> </fileset> </copy> </target> <!--生成开发环境的 properties文件--> <target name="replaceDevPropAndXML" depends="copyPropAndXML"> <delete dir="${classes.dir}" includes="storm_config.properties" /> <copy file="${resources.dir}/config_dev.properties" todir="${classes.dir}" overwrite="true"/> <move file="${classes.dir}/config_dev.properties" tofile="${classes.dir}/storm_config.properties" /> </target> <!--生成测试环境的 properties文件--> <target name="replaceTestPropAndXML" depends="copyPropAndXML"> <delete dir="${classes.dir}" includes="storm_config.properties" /> <copy file="${resources.dir}/config_test.properties" todir="${classes.dir}" overwrite="true"/> <move file="${classes.dir}/config_test.properties" tofile="${classes.dir}/storm_config.properties" /> </target> <!--打包开始,名字为jar,依赖任务为compile--> <target name="buildDevJar" depends="replaceDevPropAndXML"> <!--Create a property containing all .jar files, prefix lib/, and seperated with a space--> <pathconvert property="mf.classpath" pathsep=" "> <mapper> <chainedmapper> <!-- jar包文件只留文件名,去掉目录信息 --> <flattenmapper/> <!-- add lib/ prefix --> <globmapper from="*" to="lib/*"/> </chainedmapper> </mapper> <path refid="lib-classpath"/> </pathconvert> <!-- jar文件的输出路径 --> <jar destfile="${output.dir}/${jarname}_dev.jar" basedir="${classes.dir}"> <manifest> <attribute name="Main-Class" value="${mainclass}"/> <attribute name="Class-Path" value="${mf.classpath}"/> </manifest> </jar> </target> <!--打包开始,名字为jar,依赖任务为compile--> <target name="buildTestJar" depends="replaceTestPropAndXML"> <!--Create a property containing all .jar files, prefix lib/, and seperated with a space--> <pathconvert property="mf.classpath" pathsep=" "> <mapper> <chainedmapper> <!-- jar包文件只留文件名,去掉目录信息 --> <flattenmapper/> <!-- add lib/ prefix --> <globmapper from="*" to="lib/*"/> </chainedmapper> </mapper> <path refid="lib-classpath"/> </pathconvert> <!-- jar文件的输出路径 --> <jar destfile="${output.dir}/${jarname}_test.jar" basedir="${classes.dir}"> <manifest> <attribute name="Main-class" value="${mainclass}"/> <attribute name="Class-Path" value="${mf.classpath}"/> </manifest> </jar> </target> <!--运行一下jar包,试试看效果--> <target name="runJar" > <!--其实这里就是运行jar命令,注意fork一定加上,不然不起作用--> <java jar="${jarfilename}" fork="true"/> </target> <!-- 清理 --> <target name="clean"> <delete dir="${output.dir}"/> <delete dir="${classes.dir}"/> </target> </project>