今天给大家分享给大家使用shell脚本,将SVN上的项目检出到Linux服务器并进行Tomcat重新部署项目
#!/bin/sh
. /etc/profile
SVNProjectAddress=svn 地址
projectName=projectName
echo "begin deploy $projectName project!"
#文件存储路径
cd /project
#删除项目(这里使用projectName是因为我的本地存储的项目名跟svn上保持一致)
rm -rf $projectName
if [ -d "$projectName" ]; then
echo "$projectName folder delete error !"
exit 1
fi
#从svn上checkout下来文件
echo "checkout source code from svn:"
svn checkout $projectSVN $projectName --username name --password password
if [ $? -ne 0 ];then
echo "checkout code from svn error !"
exit 1
fi
#因为我们从svn上检出的项目只是源代码,想要服务器运行需要编译成class文件才可以,下面就是编译项目
cd $projectName
echo "build project:"
#build.xml是我们项目下提前写好的ant编译文件,下面我会附上build.xml代码
/servers/apache-ant-1.9.6/bin/ant -buildfile build.xml
if [ $? -ne 0 ];then
echo "build project error !"
exit 1
fi
#这里是覆盖我们的配置文件,因为我们线下和线上的配置文件总会有一些不同,所以我们为了避免我们每次都需要更改文件,所以我们提前在线上配置一个文件,编译完成后替换一下
echo "recover config file:"
#/data/projectConfig/$projectName/* 为存储线上配置文件的文件夹下的所有文件
\cp -rf /data/projectConfig/$projectName/* build/WEB-INF/classes
#停止服务器
echo "stop and backup the online project:"
/servers/tomcat/bin/shutdown.sh
#停止5秒 ---> 给服务器一个关闭的时间
sleep 5s
#备份当前版本
mv /project/$projectName /project/projectBak/$projectName.`date +%Y%m%d%H%M`
#将文件复制到tomcat下的webapps下
echo "deploy project and start:"
#此处的build 是我们上面使用ant编译之后存储编译后项目的文件夹
mv build /servers/tomcat/webapps/projectName
#启动服务器
/servers/tomcat/bin/startup.sh
echo "deploy the project success !"
···
###下面我给大家附上以build.xml的代码,我使用的是MyEclipse,所以svn上的文件目录是以MyEclipse的文件目录进行开发的,如果你是eclipse 或者其他开发工具,跟腱炎自己的实际情况进行更改
<?xml version="1.0" encoding="utf-8"?>
<project name="projectName" default="all" basedir=".">
<property name="src" value="${basedir}/src/java"/>
<property name="resource" value="${basedir}/src/resources"/>
<property name="lib" value="${basedir}/WebRoot/WEB-INF/lib"/>
<property name="build.dir" value="${basedir}/build"/>
<property name="build.webinf" value="${basedir}/build/WEB-INF"/>
<property name="build.weblib" value="${basedir}/build/WEB-INF/lib"/>
<property name="build.metainf" value="${basedir}/build/META-INF"/>
<property name="build.dest" value="${basedir}/build/WEB-INF/classes"/>
<path id="compile.classpath">
<fileset dir="${lib}" includes="*.jar" />
</path>
<target name="init">
<tstamp/>
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.webinf}"/>
<mkdir dir="${build.weblib}"/>
<mkdir dir="${build.metainf}"/>
<mkdir dir="${build.dest}"/>
<copy todir="${build.dir}">
<fileset dir="${basedir}/WebRoot">
<include name="**"/>
</fileset>
</copy>
</target>
<target name="compile" description="Compile module">
<javac destdir="${build.dest}" debug="true" optimize="false" deprecation="false" failonerror="true" source="1.8" target="1.8">
<compilerarg line="-encoding UTF-8 "/>
<src path="${src}" />
<classpath>
<path refid="compile.classpath" />
</classpath>
</javac>
<copy todir="${build.dest}">
<fileset dir="${resource}" includes="**/*.xml" />
<fileset dir="${resource}" includes="**/*.properties" />
<fileset dir="${resource}" includes="**/*.txt" />
</copy>
</target>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="all" depends="clean,init,compile"
description="clean,init,compile,and build"/></project>