ANT 自动化部署实现方案

ANT 自动化部署实现方案

SVN自动拉取项目 autoSvn.bat

@echo off
@echo ====================================
@echo author callens
@echo update:2017-03-17
@echo ====================================

rem SVN安装目录
set svn_home=D:\Program Files\TortoiseSVN\bin
rem SVN工作目录
set svn_work=D:\SVN\
rem SVN日志目录
set setup_path=E:\antCmd\svn_log

@echo 正在更新目录 %svn_work%
if exist %svn_work% GOTO:gengxin else GOTO:MK

:MK
@echo 请检查您的工作目录是否正确
echo & pause GOTO:END
@echo 更新完成退出
goto:END

:END
exit

:gengxin
if exist "%setup_path%"\autoUpdate.log(echo update:%date% %time% >> "%setup_path%"\autoUpdate.log) else echo create:%date% %time% >> "%setup_path%"\autoUpdate.log
"%svn_home%"\TortoiseProc.exe/command:update /path:"%svn_work%" /notempfile /closeonend:1
exit

git 自动拉取项目 autoGit.bat

title GIT数据下载
color 16

@echo off
rem 当前的工作目录
set work_home=E:\gitTest\interface
rem GIT CMD命令工作目录
set git_home=D:\Program Files\Git\cmd
rem 设置git的环境变量
set path=%path%;D:\Program Files\Git\cmd
@echo ====================================
@echo author callens
@echo update:2018-07-18
@echo ====================================
cd /d %git_home%
echo GIT工作目录是:%cd%
echo git 版本号
git --version
cd /d %work_home%
rem develop为分支名称
git pull origin develop
pause

shell脚本启动tomcat shell.txt

#!/bin/sh
#关闭tomcat
source /etc/profile;sh project/tomcat/bin/shutdown.sh
#查看进程
ps -ef|grep /home/ifg/project/tomcat
sleep 20s
#关闭进程 ${tomcatPath}
ps -ef|grep -v 'grep'|grep /home/ifg/project/tomcat|awk '$3~/[0-9]+/{print $2}'|while read s;do kill -9 $s; done;
sleep 10s
#删除缓存
rm -rf project/tomcat/webapps/pfm
rm -rf project/tomcat/work/Catalina/localhost/pfm
#启动tomcat
source /etc/profile;nohup sh project/tomcat/bin/startup.sh > nohup.out &
ps -ef|grep /home/ifg/project/tomcat

ant 部分脚本内容

使用svn需要注意的内容,如果使用bat脚本则不需要这些内容,需要注意的是

个人使用这种方式不是太好,最好使用bat的方式,能够直接使用当前svn的一些命令,和当前项目比较契合

<!-- 使用SVN的话,需要把svnant包下的lib的所有文件复制到ant的lib下 -->
<property name="svn.dir" value="https://127.0.0.1/svn/investplatform/investplatfrom/trunk" /> 
<!-- 需要引入svn task文件,使svn任务可以使用 -->
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" />
<!-- 设置svn相关属性-->
<svnSetting id="svn.setting" svnkit="true" username="callens" password="callens" javahl="false" />
<!-- copySVN的目录结构到antwork中  -->
<target name="checkout" depends="clear" description="下载SVN文件">  
    <echo message="begin deploy..." />  
    <svn refid="svn.setting">
        <checkout url="${svn.dir}/easyframe" destPath="${copytodir}/" revision="HEAD" force="true" />
    </svn>
    <echo message="begin deploy..." />  
</target>  

如果使用lomback的话,需要使用ECJ进行便以文件,平常的javac编译会报错

<!-- 使用eclipse jdt 进行编译,而不使用JDK编译,需要引入JDTC -->
<!-- org.eclipse.jdt.core_3.xx.x.vX.jar 这个jar包可以在eclipse安装路径下的 plugins 下找到 -->
<!-- 使用jdt编译,需要添加jar:org.eclipse.jdt.compiler.tool_1.1.0.vX.jar,org.eclipse.jdt.core_3.11.2.vX.jar,
	org.eclipse.jdt.debug.ui_3.7.101.vX.jar,jdtCompilerAdapter.jar(需要从)org.eclipse.jdt.core_3.11.2.vX.jar中解压 -->
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" />

<!-- etc.jar.path=${ant.dir}/lib/ecj-4.6.3.jar 这个jar可以在ant的lib中找到-->
<!-- 开始编译项目 -->
<target name="initInterface" depends="copyJarToInterface">
    <delete dir="${interface.class}" />
    <mkdir dir="${interface.class}" />

    <echo message="interface compile running" />
    <exec executable="${jdk.dir}/bin/java">
        <arg value="-javaagent:${lombok.jar.path}=ECJ"/> 
        <arg value="-jar"/>
        <arg value="${etc.jar.path}"/>
        <arg value="-cp"/>
        <arg pathref="interface.jar"/>
        <arg value="-d"/>
        <arg value="${interface.class}"/>
        <arg value="${interface.src}"/>
        <arg value="-source"/>
        <arg value="1.8"/>
    </exec>

    <echo message="interface copy config file to classes" />
    <copy todir="${interface.class}"  overwrite="true">  
        <fileset dir="${interface.src}">  
            <include name="**/*.xml" />  
            <include name="**/*.properties" />  
            <include name="**/*.sql" />
            <include name="**/*.doc" />
            <include name="**/*.docx" />
            <exclude name="/src/*_prd.*" />
            <exclude name="/src/rebel.xml" />
        </fileset>  
    </copy>

    <echo message="interface copy environment science config file to classes" />
    <copy todir="${interface.class}"  overwrite="true">
        <fileset dir="${interface.env.path}/${interface.env}/" >  
            <include name="**/*.*" />  
        </fileset>
    </copy>
</target>
<?xml version="1.0" encoding="GBK" ?>
<project name="msp" default="shellTomcat" >
	<property environment="env" />
	<property name="svn.bat" value="E:\antCmd\autoSvn.bat" /> 
    <property file="${propertiesPath}/property.properties" /><!-- 引入属性文件 -->
   
	<!--更新SVN/git 都是执行bat-->
	<target name="exec" depends="clear" description="更新SVN">  
		<echo message="begin deploy..." />  
			<exec executable="cmd.exe">
				<arg line="/c ${svn.bat}" />
				<arg line="/c exit" />
			</exec>
		<echo message="begin deploy..." />  
    </target>
    <!-- 新建文件夹 -->
    <mkdir dir="${trusteeVisualTargetPath}" />
    <!-- 删除文件夹 -->
    <delete dir="${msp.build.dir}/classes"  />
    <delete  includeEmptyDirs="true"><!-- 哪些文件不需要进行删除 -->
        <fileset dir="${copytodir}" includes="**/*" defaultexcludes="no"/>
    </delete>
    <!-- 复制文件,过滤一些不需要复制的内容 -->
    <copy todir="${trusteeVisualTargetPath}" >
        <fileset dir="${trusteeVisualSourcePath}">
            <exclude name="**/*_prd.*" />
            <exclude name="**/*-prd.*" />
            <exclude name="**/rebel.xml" />
        </fileset>
    </copy>
     <!-- 初始化classpath,添加编译的时候执行必要的jar包 -->  
    <path id="project.classpath">  
		<!-- 项目的jar包 -->
        <fileset dir="${lib.dir}">  
            <include name="**/*.jar" />  
        </fileset>  
        
        <!-- ant lib包  -->  
        <fileset dir="${ant.dir}">  
            <include name="**/*.jar" />  
        </fileset>  
    </path>
    
    <!-- 编译msp的java -->  
    <target name="compileMsp" depends="init" description="编译MSP 的java文件">  
        <echo message="begin compile..." />  
        <javac fork="true" executable="${jdk.dir}" srcdir="${msp.src.dir}" destdir="${msp.build.dir}/classes"   
            includeantruntime="false" nowarn="on"   
            source="1.7" target="1.7" deprecation="true" debug="true"   
            encoding="GBK"  optimize="true" failonerror="on" classpathref="project.classpath"   
            >
		  <compilerarg line="-Xlint:unchecked" /> 
		  <compilerarg line="-Xlint:deprecation" /> 
        </javac>  
		<copy todir="${msp.build.dir}/classes">  
            <fileset dir="${msp.src.dir}">  
                <include name="**/*.xml" />  
                <include name="**/*.properties" />  
                <include name="**/*.sql" />
				<include name="**/*.doc" />
				<include name="**/*.docx" />
            </fileset>  
        </copy>  
		
        <echo message="end compile..." />  
    </target>  
    
     <!-- 将项目 class文件打成 jar包 -->  
	<target name="pack" depends="compile">
		<jar jarfile="${copytodir}/${frame.webapp.name}.jar">   
			<fileset dir="${frame.build.dir}/classes">   
				<!-- <include name="**/*.class"/>   -->
			</fileset>   
		</jar>   
	</target>   
    
    <!-- 打成war包, 名称默认为 项目名 -->  
    <target name="war" depends="compileMsp" description="将工程打成war包">  
        <echo message="begin war..." />  
        <war destfile="${copytodir}/${msp.webapp.name}.war" basedir="${webRoot.dir}" webxml="${webRoot.dir}/WEB-INF/web.xml">  
            <lib dir="${lib.dir}" />  
            <classes dir="${msp.build.dir}/classes" />  
            <fileset dir="${webRoot.dir}">  
                <include name="***.*" />  
            </fileset>  
        </war>  
        <echo message="end war..." />  
    </target> 
    
    <!-- 如果使用scp ,则需要下载jsch-0.1.54.jar文件 -->
	 <target name="updateHost" depends="war" description="将war包放入服务器中">  
        <echo message="begin deploy..." />  
        <scp todir="${root.name}:${root.pwd}@${root.url}:${root.path}" file="${war.path}" trust="yes" knownhosts="E:\antCmd/.ssh/knownhosts"></scp>
        <echo message="end deploy..." />  
    </target> 
</project>

使用ant远程操作tomcat

<!-- 调用shell脚本 -->
<target name="execShell" depends="copyFile" description="重新启动tomcat"> 
    <echo message="begin deploy..." />  
    <sshexec host="${root.url}" username="${root.name}" password="${root.pwd}" trust="true" failonerror="false" 
             commandResource="${shell.path}" />
    <echo message="end deploy..." />
</target>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值