利用svn+ant 自动构建工程部署

最近项目上要部署工程了,做了一个利用svn+ant 方式 自动构建工程并部署。觉得以后部署可以省好多事情。觉得很不错。这次只需要部署java 后台进程,写个随笔吧。以后可以扩展到 WEB 应用 war 等方式,呵呵,ANT 无所不能!

闲话不多说,上代码:

<project name="workflow" default="all" basedir=".">
        <description>
            simple example build file
    </description>
        <!-- set global properties for this build -->
        <property name="frame.checkout.dir" location="/usr/workflow/srcs/frame" />
        <property name="frame.src" location="/usr/workflow/srcs/frame/src" />
        <property name="frame.bin" location="/usr/workflow/bin/frame/classes" />


        <property name="dataaccess.checkout.dir" location="/usr/workflow/srcs/dataaccess" />
        <property name="dataaccess.src" location="/usr/workflow/srcs/dataaccess/src" />
        <property name="dataaccess.bin" location="/usr/workflow/bin/dataaccess/classes" />

        <property name="engine.checkout.dir" location="/usr/workflow/srcs/engine" />
        <property name="engine.src" location="/usr/workflow/srcs/engine/src" />
        <property name="engine.bin" location="/usr/workflow/bin/engine/classes" />

        <property name="libs.checkout.dir" location="/usr/workflow/libs" />

        <property name="workflow.jar" location="/usr/workflow/jar" />

        <property name="ant.lib" location="/usr/local/apache-ant-1.8.1/lib" />

        <property name="svn.path" value="svn://192.168.32.115/workflow" />

        <path id="svnant.classpath">
                <fileset dir="${ant.lib}">
                        <include name="**/*.jar" />
                </fileset>
        </path>

        <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.classpath" />

        <target name="frame.checkout">
                <svn username="zengke" password="zengke">
                        <checkout url="${svn.path}/srcs/frame" revision="HEAD" destPath="${frame.checkout.dir}" />
                </svn>
        </target>

        <target name="dataaccess.checkout">
                <svn username="zengke" password="zengke">
                        <checkout url="${svn.path}/srcs/dataaccess" revision="HEAD" destPath="${dataaccess.checkout.dir}" />
                </svn>
        </target>

        <target name="engine.checkout">
                <svn username="zengke" password="zengke">
                        <checkout url="${svn.path}/srcs/engine" revision="HEAD" destPath="${engine.checkout.dir}" />
                </svn>
        </target>

        <target name="libs.checkout">
                <svn username="zengke" password="zengke">
                        <checkout url="${svn.path}/libs" revision="HEAD" destPath="${libs.checkout.dir}" />
                </svn>
        </target>

        <path id="compile.classpath">
                <pathelement path="${frame.bin}" />
                <pathelement path="${dataaccess.bin}" />
                <pathelement path="${engine.bin}" />
                <fileset dir="${libs.checkout.dir}">
                        <include name="das/**/*.jar" />
                        <include name="sdo/**/*.jar" />
                        <include name="engine/**/*.jar" />
                        <include name="carefx/**/*.jar" />
                        <include name="third_part/**/*.jar" />
                </fileset>
        </path>

        <target name="all" depends="init,frame.checkout,dataaccess.checkout,engine.checkout,copyfiles,compile,frame,dataaccess,engine,startEngine" />

        <target name="init">
                <!-- Create the time stamp -->
                <tstamp />
                <!-- Create the build directory structure used by compile -->
                <mkdir dir="${frame.bin}" />
                <mkdir dir="${dataaccess.bin}" />
                <mkdir dir="${engine.bin}" />
                <mkdir dir="${workflow.jar}" />

        </target>


        <target name="copyfiles" depends="libs.checkout,frame.checkout,dataaccess.checkout,engine.checkout,init">
                <copy todir="${frame.bin}">
                        <fileset dir="${frame.checkout.dir}/src/main/resources">
                                <include name="**/**" />
                                <exclude name="**/config_cf.xml" />
                                <exclude name="**/config_da.xml" />
                        </fileset>
                </copy>

                <copy todir="${dataaccess.bin}">
                        <fileset dir="${dataaccess.checkout.dir}/src/main/resources">
                                <include name="**/**" />
                        </fileset>
                </copy>

                <copy todir="${engine.bin}">
                        <fileset dir="${engine.checkout.dir}/src/main/resources">
                                <include name="**/**" />
                        </fileset>
                </copy>
        </target>

        <target name="compile" depends="copyfiles" description="compile the source ">
                <!-- Compile the java code from ${src} into ${build} -->
                <javac destdir="${frame.bin}" includeAntRuntime="false" srcdir="${frame.checkout.dir}">
                        <compilerarg line="-encoding UTF-8" />
                        <classpath refid="compile.classpath" />
                </javac>
                <javac destdir="${dataaccess.bin}" includeAntRuntime="false" srcdir="${dataaccess.checkout.dir}">
                        <compilerarg line="-encoding UTF-8" />
                        <classpath refid="compile.classpath" />
                </javac>
                <javac destdir="${engine.bin}" includeAntRuntime="false" srcdir="${engine.checkout.dir}">
                        <compilerarg line="-encoding UTF-8" />
                        <classpath refid="compile.classpath" />
                </javac>
        </target>

        <target name="frame" depends="compile">
                <jar destfile="${workflow.jar}/frame.jar" basedir="${frame.bin}">
                        <include name="**/**" />
                </jar>
        </target>

        <target name="dataaccess" depends="compile">
                <jar destfile="${workflow.jar}/dataaccess.jar" basedir="${dataaccess.bin}">
                        <include name="**/**" />
                </jar>
        </target>

        <target name="engine" depends="compile">
                <jar destfile="${workflow.jar}/engine.jar" basedir="${engine.bin}">
                        <include name="**/**" />
                </jar>
        </target>


        <target name="startEngine" depends="frame,dataaccess,engine" description="run">
                <echo message="----------- Engine start begin ------------" />
                <java classname="com.carefx.workflow.test.ServerStart" fork="yes">
                        <classpath refid="compile.classpath" />
                </java>
                <echo message="----------- Engine start end ------------" />
        </target>

        <target name="startDataAccess" depends="frame,dataaccess" description="run">
                <echo message="----------- DataAccess start begin ------------" />
                <java classname="com.carefx.dataaccess.server.impl.mina.MinaDataAccessServer" fork="yes">
                        <classpath refid="compile.classpath" />
                </java>
                <echo message="----------- DataAccess start end ------------" />
        </target>

</project>

相关推荐