服务器上放了几个工程,启动了几个resin跑服务。所以,一开始要更新一个工程的方法是 :
1)找到工程的对应resin,sh httpd.sh stop。
2)进入对应的工程下,SVN UP进行更新。
3)更新完后进入工程下进行ant编译。
4)重复步骤一,进行 sh httpd.sh start。
由此可见,更新一个工程的时候得进行四个步骤,在进行每个步骤的时候还要记住resin、工程和ant的存放路径,这样太消耗程序员脑力,体力。虽然说人的大脑还有将近90%没被使用,但也不能被这个占用脑的内存是吧?!
所以为了节约脑内存,现在一次将他们的路径和执行步骤写在一个shell脚本中,这样当你要更新项目时,你输入对应的命令和参数就可以自动完成了。下面就是我写的一个简单的shell脚本:
#!/bin/sh
ROOT_PATH=/backup
RESIN_PATH=/resinapp #resin放置的路径
APP1_RESIN=app1resin #工程一对应的resion名
APP2_RESIN=app2resin #工程二对应的resion名
APP3_RESIN=app3resin # .......
JAVA_HOME=/usr/java/jdk1.5.0_07
ANT_HOME=/backup/ant/
上面的脚本是做了一些变量的赋值,当然如果你还有更多的项目和web容器的话,可以再继续添加变量,方便以后的调用。(这里我用的是resin,当能也可以是其它的如:tomcat),下面shell接上面:
#parmater check
if [ $# -lt 5 ]; then
echo 'need: <mehod:[web]> <project name:[app1_name]> <svn:[checkout] [update]> <[branches path] [trunk]> <deploy name>'
exit
fi
#stop resin
echo ">>>>>> resin stop<<<<<<<"
case $5 in
'app1_name')
cd $RESIN_PATH/$APP1_RESIN/bin
echo "stop $RESIN_PATH/$APP1_RESIN"
sh $RESIN_PATH/$APP1_RESIN/bin/httpd.sh stop
;;
'app2_name')
cd $RESIN_PATH/$APP2_RESIN/bin
echo "stop $RESIN_PATH/$APP2_RESIN"
sh $RESIN_PATH/$APP2_RESIN/bin/httpd.sh stop
;;
#如果还有判断可直接在后面接
esac
当你没输入参数执行脚本时提示你输入对应参数,在这里设置了五个参数,参数的输入可以根据下面的脚本和你自己设置的svn路径输入。上面的代码功能是停掉对应的resin服务。已经很长了吧!确实啊,不过还有一段核心shell,不得不贴上来
#svn opt
echo ">>>> svn <<<<"
case $3 in
'checkout')
cd $ROOT_PATH/$1/
rm -rf $ROOT_PATH/$1/$5
mkdir $5
if [ "$4" = "trunk" ]; then
svn co svn://219.*.*.*/eGroup/$2/trunk $5 --username ** --password **
else
svn co svn://219.*.*.*/eGroup/$2/branches/$4 $5 --username ** --password **
fi
echo "dir $ROOT_PATH/$1/$5"
echo "svn checkout >>>>>>>"
;;
'update')
cd $ROOT_PATH/$1/$5
svn up --username ** --password **
echo "dir $ROOT_PATH/$1/$5"
echo "svn update >>>>>>>"
;;
esac
cd $ROOT_PATH/$1/$5
echo ">>>> ant build <<<<"
$ANT_HOME/bin/ant -f build.xml
上面的是得到对应工程的svn路径,能后进行checkout或update,再用ant执行工程目录下的build.xml编译。编译成功后启动对应的resin(如果再加进来的话不仅你不愿意看,我也会头大的),这样你的工程已经构建完成了。
终于构建完成了,怎么觉得看了这篇文章觉得写脚本比不写脚本还麻烦,其实不能,写了脚步可能一时麻烦,但是工程的更新就显得犹为简介,你试想下,当你还在找对应resin要停掉的时候,我只要敲下一条命令已经完成。由于脚本太长所以将脚本附件也贴了上来,可以根据情况自行修改,可能还有更好的自动构建方法,在此只是本人的一个学习记录。
(感谢您的耐心阅读!)
分享到:
相关推荐
使用Ant,一个基于XML的构建工具,可以创建可重复执行的脚本来实现自动化。以下是关于这个主题的详细解释。 **Ant脚本的原理与应用** Ant是一个开源的Java构建工具,它通过XML格式的构建文件(build.xml)来定义...
标题中的“antsvn更新打包部署提交自动化”涉及的是在软件开发过程中如何利用Ant(一个Java构建工具)和Subversion(SVN,版本控制系统)实现自动化的构建、更新、打包、部署和提交流程。这个过程旨在提高开发效率,...
Ant是Apache组织开发的一款Java构建工具,它使用XML来描述构建过程,包括编译、测试、打包、部署等任务。...在实际开发中,Ant脚本可以被定制以满足各种复杂的构建需求,确保项目的构建过程自动化、可重复且高效。
Ant是一个基于Java的构建工具,它提供了跨平台的构建脚本能力,能够执行编译、测试、打包等任务。它的核心是构建文件,通常命名为build.xml,其中包含了构建过程的步骤和指令。 XMLTask是Ant的一个扩展,它允许在...
Ant是Apache组织开发的一款Java构建工具,它使用XML来描述构建过程,使得构建脚本具有良好的可读性和可维护性。在本项目中,Ant被用来执行自动化任务,包括从Subversion(SVN)版本控制系统中获取源代码,并对代码...
总之,`ant操作SVN的jar包`使得开发者能够利用Ant的灵活性和自动化的优点,结合SVN的强大版本控制功能,构建出高效、自动化的软件开发流程。通过合理配置Ant脚本和使用`svnant`库,可以大大提高团队协作效率,确保...
这个插件通常以jar包的形式存在,例如在给定的"antsvn"压缩包中。为了使用这个插件,你需要将jar包添加到Ant的类路径中。这样,你就可以在Ant构建文件中声明新的任务,比如`<svn>`,并配置相关属性来执行SVN命令。 ...
不过,我们可以根据标题推测这篇博文可能讲解了如何在Ant构建脚本中配置和使用SVN的相关任务,例如 checkout、commit、update等操作。 标签“源码”和“工具”暗示了内容可能涉及源代码管理和利用Ant工具进行自动化...
在Java开发过程中,Apache ...通过以上步骤,你可以在Ant构建脚本中集成SVN功能,方便地进行版本控制操作。这有助于简化开发流程,提高团队协作效率。请确保正确配置所有依赖,并始终备份好你的源代码,以防意外丢失。
本话题将详细介绍如何利用JMeter、Ant、SVN和Jenkins这四款工具来构建一个完整的接口自动化测试流程。 首先,Apache JMeter是一款强大的性能测试工具,它主要用于测试Web应用,包括接口测试。通过JMeter,我们可以...
`build.xml`是ANT的构建脚本,包含了所有构建任务的描述,如编译源代码、打包、测试和部署等步骤。这些任务通过ANT的任务(tasks)来实现,例如`javac`任务用于编译Java源代码,`jar`任务用于创建JAR文件,`copy`...
此外,你还可以通过`<property>`元素定义属性,这些属性可以在整个构建脚本中重用,如源代码目录、目标目录等。 build.properties文件是Ant的属性文件,它用来存储配置信息,如目录路径、版本号等。这些属性可以在...
这个压缩包中包含的`build.xml`文件就是Ant的构建脚本,用于定义构建任务、依赖关系和目标。 1. **Ant基本概念**: - **项目(Project)**: Ant的核心单位,包含了构建过程中所有的任务、属性和文件集。 - **任务...
3. **Ant构建文件**:在项目根目录下,通常会有一个名为`build.xml`的文件,这是Ant的构建脚本。它定义了构建过程中的各个任务,如编译、测试和打包。例如,`build.xml`可能包含`javac`任务来编译Java源码,`jar`...
Jenkins是一种开源的持续集成和...同时,编写和维护Ant构建脚本也是实现自动化构建过程的重要部分。通过上述的配置过程,构建起了一个完整的持续集成环境,能够帮助团队提高开发效率,减少集成错误,加快软件交付速度。
标题中的“Ant整合Jenkins自动构建”涉及到两个关键的开源工具——Apache Ant和Jenkins,它们在软件开发的持续集成(Continuous Integration, CI)流程中起着重要作用。 Apache Ant是Java平台上的一个构建工具,...
在Ant中,构建脚本通常以XML格式编写,包含了一系列目标(target)和任务(task)。这些任务可以执行编译、打包、测试等操作。为了与SVN交互,我们需要引入`ant-contrib`库,它提供了一些额外的Ant任务,比如循环、...