Ant + SvnLib实现自动更新,编译,打包,发布部署
2016-10-14 17:16
901 查看
每次修改点东西后,重新发布的时候要从svn上将最新代码更新下来,重新编译打包,停掉服务器,把打好的包传上去,如果是WebSphere这样的web服务器的话,还要一步一步的部署,然后在启动服务器,感觉麻烦,搞程序开发的就是这样,懒,能自动处理的绝不手动做,能点一下完成的绝不点第二下,我就想能不能搞个脚本什么的一下就将这些事情搞完,就用ant
和 SVNKit弄了一下。
原理就是利用脚调用ant ,通过ant调用SVNKit的类来检出代码,然后编译,打成war包,在停掉服务器,将war包拷到服务器上,然后启动服务器就ok了,下面就开始吧
需要的东西(点击下边连接百度云下载)
1、ant
2、SVNKit(一些jar包)
3、javaee.jar(编译时需要这个jar包)
点击此处下载所需要的东西
1、下载ant的安装包apache-ant-1.9.3-bin.tar.gz
2、解压到一个目录,比如/opt下
3、如果bin目录下的ant文件没有执行权限,切换到bin目录下,用chmod +x ant添加执行权限
4、配置环境变量,使ant命令在任意位置都可以用
在/etc/profiles文件最后添加如下(注意路径要写对)
PATH=$PATH:$HOME/bin
export ANT_HOME=/opt/apache-ant-1.9.3
export PATH=$ANT_HOME/bin:$PATH
export PATH
保存并退出
执行source /etc/profiles,使修改的环境变量生效
5、将SVNKit的jar和javaee.jar包复制到一个制定目录下,我将SVNKit的jar包都放到/opt/apache-ant-1.9.3/svnlib下了,将javaee.jar放到/opt/apache-ant-1.9.3/下了,这个位置随意只要下边写build文件时把路径搞对了就可以
6、就是写build.xml文件和脚本了,下载的文件里有,只要把相应的地方(标红的部分)改对就行
/opt/build.xml文件内容
到这其实就可以自动从svn上检出并打包了,但是还不能自动部署,其实tomat部署就是停掉服务器,将原来部署的删掉,在将新的复制过去就行了
这一过程我们用一个shell脚本来完成
编写shell脚本publish(放到/bin下就不用再设置环境变量了,直接就可以执行,记得添加可执行权限哈)
#vi /bin/publish
脚本内容
以上转载其他地方:http://www.nontrace.com/articles/2014/12/06/1417851702121.html
和 SVNKit弄了一下。
原理就是利用脚调用ant ,通过ant调用SVNKit的类来检出代码,然后编译,打成war包,在停掉服务器,将war包拷到服务器上,然后启动服务器就ok了,下面就开始吧
需要的东西(点击下边连接百度云下载)
1、ant
2、SVNKit(一些jar包)
3、javaee.jar(编译时需要这个jar包)
点击此处下载所需要的东西
1、下载ant的安装包apache-ant-1.9.3-bin.tar.gz
2、解压到一个目录,比如/opt下
3、如果bin目录下的ant文件没有执行权限,切换到bin目录下,用chmod +x ant添加执行权限
4、配置环境变量,使ant命令在任意位置都可以用
在/etc/profiles文件最后添加如下(注意路径要写对)
PATH=$PATH:$HOME/bin
export ANT_HOME=/opt/apache-ant-1.9.3
export PATH=$ANT_HOME/bin:$PATH
export PATH
保存并退出
执行source /etc/profiles,使修改的环境变量生效
5、将SVNKit的jar和javaee.jar包复制到一个制定目录下,我将SVNKit的jar包都放到/opt/apache-ant-1.9.3/svnlib下了,将javaee.jar放到/opt/apache-ant-1.9.3/下了,这个位置随意只要下边写build文件时把路径搞对了就可以
6、就是写build.xml文件和脚本了,下载的文件里有,只要把相应的地方(标红的部分)改对就行
/opt/build.xml文件内容
<?xml version="1.0" encoding="utf-8"?> <project basedir="/cfiles/antTemp" name="myProject" default="packageWar"> <!-- SVN相关属性 --> <!-- SVN 用户名--> <property name="svn.username" value="username" /> <!-- SVN密码 --> <property name="svn.password" value="password" /> <!-- SVN需要的一些jar包,我把它放到ant目录下了,你也可以放到其他目录 --> <property name="svn.libPath" value="/opt/apache-ant-1.9.3/svnlib" /> <!-- SVN地址 --> <property name="svn.repository" value="http://www.nontrace.com:81/project/server" /> <!-- 项目名称 --> <property name="projectName" value="Blog" /> <!-- SVN检出目录 --> <property name="svn.checkoutDir" value="/cfiles/antTemp" /> <property name="svn.checkOutProject" value="${svn.checkoutDir}/${projectName}" /> <!-- 构建相关属性 --> <!-- war包保存目录 --> <property name="dir.warPath" value="/cfiles/publish" /> <!-- javaee.jar包所在目录, 如果是web项目的话,编译的时候会用到它, 我把它放到ant目录下了,你也可以放到其他目录 --> <property name="dir.javaee" value="/opt/apache-ant-1.9.3" /> <!-- 项目名称项目中源文件夹, 我这里有两个,src和config,一个里边是java代码,一个是配置文件--> <property name="dir.src" value="${svn.checkOutProject}/src" /> <property name="dir.config" value="${svn.checkOutProject}/config" /> <!--WebRoot目录--> <property name="dir.web" value="${svn.checkOutProject}/WebRoot" /> <!--项目依赖的jar包--> <property name="dir.lib" value="${dir.web}/WEB-INF/lib" /> <!--编译后的class文件保存目录--> <property name="dir.classes" value="${dir.web}/WEB-INF/classes" /> <property name="ContextRoot" value="ROOT" /> <!-- 日期格式yyyyMMdd 主要是为了生成目录 --> <tstamp prefix="tempPro."> <format property="today" pattern="yyyyMMdd" /> </tstamp> <!-- 项目编译依赖的jar包,包括lib下的jar和javaee.jar --> <path id="applib"> <fileset dir="${dir.lib}"> <include name="**/*.jar" /> </fileset> <fileset dir="${dir.javaee}"> <include name="javaee.jar" /> </fileset> </path> <!-- SVNKit相关包lib --> <path id="svnlib"> <fileset dir="${svn.libPath}"> <include name="*.jar" /> </fileset> </path> <!-- SVN检出项目代码 --> <target name="svnCheckout"> <echo message="删除原始文件,重新Checkout" /> <delete dir="${svn.checkOutProject}" /> <echo message="Checkout最新代码" /> <java classname="org.tmatesoft.svn.cli.SVN" dir="${svn.checkoutDir}" fork="true"> <arg value="checkout" /> <arg value="--username" /> <arg value="${svn.username}" /> <arg value="--password" /> <arg value="${svn.password}" /> <arg value="${svn.repository}/${projectName}" /> <classpath refid="svnlib" /> </java> </target> <!-- 删除classes目录,为编译构建做准备 --> <target name="clean"> <delete dir="${dir.classes}" /> </target> <!-- 编译构建项目 --> <target name="compile" depends="svnCheckout,clean"> <echo message="编译Java文件" /> <mkdir dir="${dir.classes}" /> <!-- 如果有多个源码包的话,每个源码包都要编译,我这里只有src destdir:编译后的class文件保存目录 srcdir:源码目录 excludes:排除文件(这里将svn相关的一些文件排除) includeAntRuntime:指出是否应在类路径中包括 Ant 运行时程序库,默认为 yes classpath:导入需要使用的jar包 --> <javac encoding="utf-8" destdir="${dir.classes}" srcdir="${dir.src}" excludes="**/.svn/**" includeAntRuntime="false"> <classpath refid="applib" /> </javac> <!--如果有多个源码包的话,每个源码包都要编译,我这里只有src--> <echo message="拷贝资源文件" /> <copy todir="${dir.classes}" preservelastmodified="true"> <fileset dir="${dir.config}" excludes="**/*.java"> </fileset> </copy> </target> <!-- 打包 --> <target name="packageWar" depends="compile"> <war destfile="${dir.warPath}/${tempPro.today}/${ContextRoot}.war" basedir="${dir.web}" /> <echo message="删除文件" /> <delete dir="${svn.checkOutProject}" /> </target> </project>
到这其实就可以自动从svn上检出并打包了,但是还不能自动部署,其实tomat部署就是停掉服务器,将原来部署的删掉,在将新的复制过去就行了
这一过程我们用一个shell脚本来完成
编写shell脚本publish(放到/bin下就不用再设置环境变量了,直接就可以执行,记得添加可执行权限哈)
#vi /bin/publish
脚本内容
!/bin/bash #调用ant打包 cd /opt ant #停止服务器 cd /opt/apache-tomcat-8.0.9/bin ./shutdown.sh #删除包 cd /opt/apache-tomcat-8.0.9/webapps rm -rf ROOT rm -rf ROOT.war #拷贝war包 rq=` date +%Y%m%d ` cp /cfiles/publish/$rq/ROOT.war /opt/apache-tomcat-8.0.9/webapps #启动服务器 cd /opt/apache-tomcat-8.0.9/bin ./startup.sh
以上转载其他地方:http://www.nontrace.com/articles/2014/12/06/1417851702121.html
相关文章推荐
- 利用ant从svn更新项目编译打包并发布项目的脚本
- Java开发流程自动化(svn+maven+nexus+jenkins) --自动编译,持续集成,测试,打包,发布/部署
- ANT发布SVN WEB项目到TOMCAT以及利用post-commit自动提交编译更新
- JENKINS+SVN+ANT+TOMCAT持续集成,实现代码更新自动部署
- ANT发布SVN WEB项目到TOMCAT以及利用post-commit自动提交编译更新
- Java开发流程自动化(svn+maven+nexus+jenkins) --自动编译,持续集成,测试,打包,发布/部署
- Android 自动化发布—采用Ant打包的完美实现:编译、合并、签名、混淆、优化、自动运行
- 实现代码自动打包与发布(Jenkins+Maven+Svn)
- Ant自动编译打包&发布 android项目
- 使用ant脚本,对java web项目,编译、打包、发布部署到tomcat
- 使用ant脚本,对java web项目,编译、打包、发布部署到tomcat
- 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)
- 【antsvn】linux服务器下用ant实现SVN代码更新,部署
- Hudson + SVN + Maven 持续集成实现自动化编译、打包、部署(over SSH 和 Deploy war/ear to a container 两种部署方式)
- 转载】Maven + SVN + Hudson 自动编译、部署、发布
- Ant自动编译打包&发布 android项目
- linux服务器下用ant实现SVN代码更新,部署
- svn+ant实现nightly build自动发布
- 使用ant+svn自动编译打包gwt程序
- 自己写的一个批处理文件,自动更新svn文件 并自动用ant编译 调用jboss的run启动服务器