`
okey9
  • 浏览: 16254 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

利用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>
分享到:
评论

相关推荐

    Jenkins+SVN+Ant持续集成环境配置笔记.pdf

    Jenkins是一种开源的持续集成和...同时,编写和维护Ant构建脚本也是实现自动化构建过程的重要部分。通过上述的配置过程,构建起了一个完整的持续集成环境,能够帮助团队提高开发效率,减少集成错误,加快软件交付速度。

    一键部署demo+jetty+svn+ant配置

    本教程将详细介绍如何通过“一键部署”实现对一个基于Java的项目(DEMO)进行配置,结合Jetty服务器、Subversion(SVN)版本控制系统以及Ant构建工具的整合使用。 首先,让我们了解这些组件的作用: 1. **DEMO**:...

    Hudson+Ant+SVN+Tomcat实现快速构建(一)

    3. **Ant构建**:Ant根据预先配置的构建脚本(通常为build.xml文件)执行编译、测试等任务。这可能包括下载依赖项,编译源代码,生成JAR或WAR文件,以及执行单元测试。 4. **部署到Tomcat**:一旦构建成功,Ant或...

    基于Jmeter+Ant+SVN+Jenkins实现接口自动化测试

    本话题将详细介绍如何利用JMeter、Ant、SVN和Jenkins这四款工具来构建一个完整的接口自动化测试流程。 首先,Apache JMeter是一款强大的性能测试工具,它主要用于测试Web应用,包括接口测试。通过JMeter,我们可以...

    jenkins+svn+maven构建

    Jenkins的SVN插件可以连接SVN版本控制系统,检出最新的代码,实现自动化构建和部署软件。 构建过程 Jenkins的构建过程包括以下几个步骤: 1. 检出代码:Jenkins从SVN版本控制系统中检出最新的代码。 2. 编译代码...

    利用ant脚本 自动构建svn增量.docx

    【Ant脚本自动构建SVN增量】是一种高效且节省资源的软件开发实践,它使得开发和测试团队能够自动化处理从代码提交到构建、打包、再到部署的整个过程。使用Ant,一个基于XML的构建工具,可以创建可重复执行的脚本来...

    CruiseControl + ANT +SVN

    【CruiseControl + ANT + SVN】是一个集成开发环境(IDE)自动化构建和版本控制的解决方案。这个组合在软件开发过程中发挥着关键作用,确保代码的持续集成和版本管理。下面将详细阐述这三个组件以及它们如何协同工作...

    Ant+Svn打包Web工程

    3. **Ant构建文件**:在项目根目录下,通常会有一个名为`build.xml`的文件,这是Ant的构建脚本。它定义了构建过程中的各个任务,如编译、测试和打包。例如,`build.xml`可能包含`javac`任务来编译Java源码,`jar`...

    jenkins + ant + testng + reportng自动集成测试操作手册

    Jenkins是一款流行的开源自动化服务器,用于自动化各种任务,包括构建、测试和部署软件。它可以集成许多测试工具和报告插件,包括Ant和TestNG,以及生成测试报告的ReportNG插件。Ant是一个基于Java的构建工具,用于...

    antsvn更新打包部署提交自动化

    标题中的“antsvn更新打包部署提交自动化”涉及的是在软件开发过程中如何利用Ant(一个Java构建工具)和Subversion(SVN,版本控制系统)实现自动化的构建、更新、打包、部署和提交流程。这个过程旨在提高开发效率,...

    svn ant cvs

    现在我们来深入探讨一下"svn+ant自动下载、部署、上传"这一主题。 首先,Subversion(svn)的主要功能是跟踪和控制文件及目录的变更。它允许开发人员在多个人之间协同工作,每个人都可以在自己的副本上进行修改,...

    Jmeter+ant+Jenkins集成接口自动化测试说明.docx

    结合Ant构建工具和Jenkins持续集成平台,我们可以构建一个高效、自动化的测试流程。 一、环境安装 1. 安装JDK:首先,确保安装了Java Development Kit (JDK),并正确配置了`JAVA_HOME`环境变量。这为JMeter和其他...

    SVN+cruisecontrol 搭建持续集成开发环境

    将 SVN 和 CruiseControl 结合使用,可以实现自动化的构建、测试和部署,提高软件开发的效率和质量。 在搭建持续集成开发环境时,需要首先安装 SVN 和 CruiseControl。SVN 服务器需要安装在一台服务器上,并且需要...

    Ant+Junit+SVN的安装过程

    完成以上步骤后,你将拥有一个配置好的开发环境,可以使用Ant进行项目构建,利用JUnit编写和运行测试,同时通过SVN进行版本控制。在实际工作中,这些工具的结合使用可以大大提高开发效率和代码质量,确保项目的稳定...

    性能自动化测试(基于jmeter+jenkins+ant+tomcat)

    2. 使用Ant构建脚本,自动化测试执行,生成`.jtl`结果文件。 3. 分析`.jtl`文件,获取性能指标,如响应时间、吞吐量、错误率等。 4. 通过Jenkins持续集成,定期运行性能测试,跟踪性能变化。 5. 如果发现性能问题,...

    CruiseControl+SVN+Maven+Tomcat持续集成环境搭建

    搭建CruiseControl+SVN+Maven+Tomcat持续集成环境,主要是为了实现代码的自动构建、测试和部署,从而提高开发效率,减少错误。整个过程涉及到多个工具的安装、配置和集成,确保每个环节都能正确工作,并通过权限管理...

    Jenkins持续集成自动化搭建(基于Msbuild+SVN+Python+Jmeter)

    通过Ant集成,Jmeter的测试计划可以在Jenkins构建过程中自动执行,并生成测试报告。 6. **持续集成环境部署**: - Jenkins安装:选择适合的操作系统版本,如Windows,并配置相关插件。 - Msbuild配置:在Jenkins...

Global site tag (gtag.js) - Google Analytics