`
sw1982
  • 浏览: 511263 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

linux服务器下用ant实现SVN代码更新,部署

阅读更多

 

这段ant脚本主要作用就是:自动从SVN库拉最新的代码,编译、并自动部署到测试服务器。

 

其中用到了“antsvn” ,有3个jar包需要配置进去

<?xml version="1.0" encoding="UTF-8"?>

<!-- wei.songw 2008.3.19 -->

<project basedir="." name="smmail" default="auto">
    
<!--  all properties are in build.properties -->
    
<property file="build.properties" />

    
<!--svn本身需要的运行库 -->
    
<path id="svnant.lib">
        
<pathelement location="${svnjavahl.jar}" />
        
<pathelement location="${svnant.jar}" />
        
<pathelement location="${svnClientAdapter.jar}" />
    
</path>

    
<!--java EE 1.4 库 -->
    
<path id="javaEE1.4">
        
<fileset dir="${javaEE1.4.lib}">
            
<include name="**/*.jar" />
        
</fileset>
    
</path>

    
<!--项目的classpath库 -->
    
<path id="project.classpath">
        
<pathelement location="${build.dir}" />
        
<fileset dir="${lib.dir}" />
    
</path>

    
<!--清理项目任务(干掉下载目录,tomcat原来的部署文件) -->
    
<target name="clear">
        
<delete dir="${work.space}" />
        
<delete dir="${tomcat.home}/work/Catalina/localhost/${ant.project.name}" />
        
<delete dir="${tomcat.home}/webapps/${ant.project.name}" />
        
<delete dir="${tomcat.home}/webapps/${ant.project.name}.war" />
    
</target>

    
<!-- load the svn task -->
    
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="svnant.lib" />

    
<!--svn同步任务-->
    
<target name="svn" depends="clear">
        
<mkdir dir="${work.space}"/>
        
<svn username="SongWei" password="Song" javahl="false">
            
<checkout url="${urlRepos}" destPath="${work.space}" />
        
</svn>
    
</target>

    
<!--编译-->
    
<target name="compile" depends="svn" description="======compile project======">
        
<echo message="compile==========>${ant.project.name}: ${ant.file}" />
        
<mkdir dir="${build.dir}" />
        
        
<copy includeemptydirs="false" todir="${build.dir}">
            
<fileset dir="${java.source}" excludes="**/*.launch, **/*.java, config/*.*"/>
        
</copy>
        
<copy includeemptydirs="false" todir="${build.dir}">
            
<fileset dir="${java.config}" excludes="**/*.launch, **/*.java"/>
        
</copy>
        
        
<javac includejavaruntime="true" debug="true" debuglevel="${debuglevel}" destdir="${build.dir}" source="${source}" target="${target}" encoding="utf-8">
            
<src path="${java.source}" />
            
<exclude name="config/"/>
            
<classpath>
                
<path refid="project.classpath">
                
</path>
                
<path refid="javaEE1.4">
                
</path>
            
</classpath>
        
</javac>

        
<javac debug="true" debuglevel="${debuglevel}" destdir="${build.dir}" source="${source}" target="${target}" encoding="utf-8">
            
<src path="${java.config}" />
        
</javac>    

    
</target>

    
<!--压缩,打包-->
    
<target name="war" depends="compile" description="======compress j2ee war file======">
        
<mkdir dir="${dist.dir}" />
        
<!--compress j2ee war file-->
        
<war destfile="${war.file}" webxml="${web.dir}/WEB-INF/web.xml">
            
<fileset dir="${web.dir}" />
            
<classes dir="${build.dir}" />
            
<lib dir="${lib.dir}" />
        
</war>
    
</target>
    
    
<!--shutdowntomcat-->
    
<target name="shutdowntomcat" description="========shutdowntomcat===========">
        
<exec executable="${tomcat.home}/bin/shutdown.sh" failonerror="false"></exec>
        
<sleep seconds="10"/>
    
</target>
    
    
<!--startuptomcat-->
    
<target name="startuptomcat" description="========startuptomcat===========">
        
<sleep seconds="5"/>
        
<exec executable="${tomcat.home}/bin/startup.sh" failonerror="false"></exec>
    
</target>

    
<!--部署到tomcat下面克-->
    
<target name="deploy" depends="war">
        
<copy file="${war.file}" todir="${tomcat.home}/webapps" />
    
</target>
    
    
<!--全自动无敌部署,启动关闭tomcat-->
    
<target name="auto" depends="shutdowntomcat,deploy,startuptomcat">
        
<echo message="DONE!!!!" />
    
</target>
</project>

 

下面是build.xml指定的properties文件,需要和build.xml放在同一个目录下面

需要指定work.space(svn拉下来代码的存放,已经编译,打包用的临时目录)

tomcat.home(tomcat服务器的根目录,如果是其他服务器,需要修改对应项)

===============================================

build.version=1.0.0

svnant.jar=/usr/java/svn/svnant.jar
svnClientAdapter.jar=/usr/java/svn/svnClientAdapter.jar
svnjavahl.jar=/usr/java/svn/svnjavahl.jar
javaEE1.4.lib=/usr/javaEE-1.4

debuglevel=source,lines
target=1.6
source=1.6

work.space=/home/gmail/workspace
dist.dir=${work.space}

build.dir=${work.space}/WebRoot/WEB-INF/classes
lib.dir=${work.space}/WebRoot/WEB-INF/lib

java.source=${work.space}/src
java.config=${work.space}/src/config

web.dir=${work.space}/WebRoot
resource.dir=${work.space}/resources

tomcat.home=/home/gmail/tomcat6
war.file=${dist.dir}/${ant.project.name}.war

urlRepos=svn://192.168.1.100/product/SMMAIL/Develop

 

分享到:
评论
6 楼 beneo 2011-03-25  
mark 一下,这个代码我自己也写过,不过就是ctrl+c ctrl+v,自己都没认真看。。。。。
5 楼 sw1982 2011-03-24  
wbsh583 写道
build.xml 放在那个目录下

build.xml是ant默认找的配置,在当前目录下放着。然后运行ant
4 楼 wbsh583 2011-03-24  
build.xml 放在那个目录下
3 楼 wbsh583 2011-03-24  
ant的这三个jar在在哪里找,还有这些文件写道哪里呢?
2 楼 sw1982 2010-09-29  
tiger860709 写道
哥,这个编译事件是由什么触发的呢?小弟不是很明白这个,呵呵

用tomcat的start.sh脚本触发。
每次重启tomcat,自动就得到最新代码部署了,不用手动拷文件
1 楼 tiger860709 2010-09-29  
哥,这个编译事件是由什么触发的呢?小弟不是很明白这个,呵呵

相关推荐

    SVNMANAGER SVN 代码管理 LINUX SVN管理

    【SVNMANAGER SVN 代码管理 LINUX SVN...通过上述步骤,你可以在Linux环境中成功部署并使用SVNManager来管理SVN代码库,实现高效且安全的团队协作。记得定期更新SVNManager到最新版本,以获得最新的功能和安全修复。

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

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

    linux下red5详细安装文档

    在Linux环境下,Red5是一款基于Java的开源流媒体服务器,其功能与Adobe的FMS相似,主要用于提供基于Flash的流媒体服务。Red5支持RTMP协议,与FMS完全兼容,能够流化FLV和MP3文件,实现客户端流的实时录制为FLV文件,...

    Ant 整合Jenkins自动构建

    4. **配置构建触发器**:选择“Poll SCM”,设置定时或者基于代码提交的触发策略,使得每次代码更新时Jenkins都能自动检查并开始构建。 5. **配置构建步骤**:在构建步骤部分,添加执行Ant脚本的命令。例如,在...

    apache-ant-1.10.8-bin.zip

    7. **版本控制集成**:Ant可以与版本控制系统如Git、SVN等集成,进行版本控制相关的操作,如提交、更新和导出代码。 8. **跨平台性**:由于Ant是用Java编写的,因此它可以在任何安装了Java运行环境的平台上运行,...

    Jenkins Maven Svn tomcat 持续集成实战

    8. **外网更新**:将新版本代码部署到生产环境。 9. **最终测试**:在生产环境中进行全面测试。 10. **回滚**:如遇生产环境出现问题,则需要回滚至之前的版本。 #### 2. 目前主流网站部署的流程 随着技术的发展,...

    Tomcat6源代码学习(运行源代码及调试)

    源代码下载后,你可以使用Maven或Ant构建工具来编译源代码,这一步会生成可执行的Tomcat6服务器。 二、运行源代码 1. 配置环境:确保你的开发环境中已经安装了Java JDK,并设置了正确的JAVA_HOME环境变量。 2. 构建...

    里面有一些jenkins持续集成用到的安装包

    Linux 是一个广泛使用的操作系统,尤其在服务器领域,许多开发者选择在 Linux 上运行 Jenkins 来实现 CI/CD 流程。下面将详细介绍 Jenkins 持续集成在 Linux 环境中的应用以及与之相关的知识点。 1. **Jenkins 安装...

    Jenkins+Maven+svn+Tomcat入门文档

    ### Jenkins+Maven+svn+Tomcat入门文档 #### Maven **基本介绍** Maven是一种基于项目对象模型...通过上述步骤,可以实现一个集成Jenkins、Maven、SVN和Tomcat的自动化构建和部署环境,提高开发效率和项目质量。

    jenkins安装部署

    - **时间同步**:确保Jenkins服务器的时间与SVN服务器的时间一致,避免因时间不同步导致无法更新代码的问题。 - **权限问题**:安装ArtifactDeployer插件以支持文件拷贝至特定目录的功能,需要注意目标目录的写入...

    在_linux系统上安装Openmeetings免费视频会议第一版

    3. **Apache Ant**:虽然不是必需的,但如果想要编译安装OpenMeetings,则需要使用Ant来自动化构建过程。 4. **Red5**:作为OpenMeetings的主要流媒体服务器,Red5负责处理实时通信的数据传输。 5. **OpenMeetings**...

    离线手动安装kenkins的常用插件

    本文将详细介绍如何在Linux环境下离线安装Jenkins,并关注于支持Subversion (svn)、SonarQube (sonar)、Ant等工具的插件安装。 首先,你需要下载Jenkins的war包,这是Jenkins服务器的基础。然后,你需要在有网络的...

    基于java的开发源码-网络电视源代码TV-Browser.zip

    【标题】"基于Java的开发源码-网络电视源代码TV-Browser.zip" 提供的是一份使用Java语言编写的网络电视应用的源代码。TV-Browser是一款开源的网络电视客户端,它允许用户浏览和观看来自全球各地的网络电视频道。 ...

    jenkins使用入门

    每个job可以配置源代码管理(SCM)如CVS、SVN或Git,选择构建工具如Maven或Ant,以及构建触发条件等。 #### Jenkins系统管理 Jenkins的系统管理包括安装和更新插件、管理节点(Jenkins分布在不同机器上的节点)、...

    基于jenkins持续集成环境的构建

    - **硬件资源**:Jenkins服务器(Windows/Linux/Mac均可),目标部署服务器。 - **软件资源**: - JDK 1.8:为Tomcat提供运行环境。 - Tomcat 7.0:作为Jenkins服务的容器。 - Jenkins 2.60.3(或其他版本)。 -...

Global site tag (gtag.js) - Google Analytics