1. 建立一个build.properties文件,方便后期的维护
#svn checkout下来的编译目录
project.lib=D:/lifeServer/WebContent/WEB-INF/lib
tomcat.lib=C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/lib
tomcat.home=C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0
project.dest=D:/lifeServer/WebContent/WEB-INF/classes
#svn的地址
svn.url=https://server-pc/svn/mobile2015/diningApp/sources/server/lifeServer
#svn的用户名
svn.username=boyaoyao
#svn的密码
svn.userpw=boyaoyao
#需要checkout svn的最新版本号 写head就可以了
svn.revision=HEAD
#定义发布目录(checkout到哪个目录)
project.webApp=D:/lifeServer
#tomcat的webapps目录
tomcat.webApp=C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/webapps
#服务器端的图片路径
img.source=C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/webapps/lifeServer/upload
#需要把上一版服务器下的图片拷贝到这个目录
img.to=D:/lifeServerImg
  1. 编写build.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project name="lifeServer" default="tomcat.start" basedir="../">    <!-- 一上来会生成ant整个流程的log文件--><tstamp> <!-- 格式化当前系统时间--><format property="TIMESTAMP" pattern="yyyyMMddHHmmss"/> </tstamp> <!-- 生成文件--><record name="log${TIMESTAMP}.txt" loglevel="verbose" append="no" action="start"/><!--用压缩文件打开svnant.jar会看到 svnantlib.xml--><typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant" /><!--引入santsvn 的jar包--><path id="path.svnant"><pathelement location="D:/apache-ant-1.9.6/lib/svnant.jar"/><pathelement location="D:/apache-ant-1.9.6/lib/svnClientAdapter.jar"/><pathelement location="D:/apache-ant-1.9.6/lib/svnjavahl.jar"/><pathelement location="D:/apache-ant-1.9.6/lib/svnkit-1.7.8.jar"/><pathelement location="D:/apache-ant-1.9.6/lib/ganymed.jar" /><pathelement location="D:/apache-ant-1.9.6/lib/svnkit-javahl16-1.7.8.jar" /><pathelement location="D:/apache-ant-1.9.6/lib/sqljet-1.1.6.jar" /><pathelement location="D:/apache-ant-1.9.6/lib/antlr-runtime-3.4.jar" /><pathelement location="D:/apache-ant-1.9.6/lib/sequence-library-1.0.2.jar" /></path><!--准备编译的目录  也就是svn checkout下来的目录 --><path id="classpath"><fileset dir="${project.lib}"><include name="*.jar" /></fileset><fileset dir="${tomcat.lib}"><include name="*.jar" /></fileset></path><!--这是svn的配置 --><svnSetting id="svnsettings" svnkit="true" javahl="false" username="${svn.username}"  password="${svn.userpw}" /><!--首先是先将tomcat停止 kill tomcat进程  这里是安装版的tomcat  免安装版的大同小异 --><target name="tomcat.stop"><java jar="${tomcat.home}/bin/bootstrap.jar" fork="true"><jvmarg value="-Dcatalina.home=${tomcat.home}"/><arg line="stop"/></java><!--这里做了一部特殊的操作 ,我的项目启动后会启动一个缓冲的服务 端口号为40004 这是必须得把缓冲的服务进行kill 要不然会影响下次启动,会报端口被占用bat文件一会儿会贴上--><exec executable="killtomcat.bat" dir="C:/AutoAntCheck"></exec></target><!-- 这里进行copyold的操作  就是把上一版用户上传的图片进行拷贝 拷贝到img.to路径  depends的意思就是说copyold这个操作依赖于tomcat.stop这个操作 , 也就是说tomcat.stop这个操作执行完成后 才可以执行这个操作。--><target name="copyOld" depends="tomcat.stop"><copy todir="${img.to}"><fileset dir="${img.source}"><!-- ***代表该目录下的子文件夹下的所有内容 --><include name="***" /></fileset></copy></target><!--然后删除tomcat中上一版项目 --><target name="clean" depends="copyOld"><delete dir="${project.webApp}"/><mkdir dir="${project.webApp}"/></target><!--然后开始执行heckout --><target name="checkoutThis" depends="clean"><!--svnsettings在上面有定义 --><svn refid="svnsettings" ><checkout url="${svn.url}" revision="${svn.revision}" destPath="${project.webApp}"/><!-- 获取版本号 ,如果作此操作checkout结束后会把当前的版本号写入log日志中 -->   <info target="${project.webApp}" verbose="true"/></svn></target><!--checkout结束后开始 编译class文件 --><target name="compile" depends="checkoutThis"><javac encoding="utf-8" srcdir="${project.webApp}/src" destdir="${project.dest}" debug="false" nowarn="true" deprecation="false" optimize="false" failonerror="true"><classpath refid="classpath" /></javac></target><!-- 编译成功后 进行打war包 -->       <target name="war" depends="compile"><war destfile="${tomcat.webApp}/lifeServer.war" webxml="${project.webApp}/WebContent/WEB-INF/web.xml" ><fileset dir="${project.webApp}/WebContent" excludes="**/*.jar"/><fileset dir="${project.webApp}/res" excludes="**/*.jar"/><lib dir="${project.lib}" /><!-- 拷贝build/classes下的class文件 --><classes dir="${project.dest}" /></war></target> <!-- 然后将上一版本中uupload中的所有文件copy到新的服务中--><target name="copyNew" depends="war"><copy todir="${img.source}"><fileset dir="${img.to}"><include name="***" /></fileset></copy></target><!--然后启动tomcat--><target name="tomcat.start" depends="copyNew">  <java jar="${tomcat.home}/bin/bootstrap.jar" fork="true" >  <jvmarg value="-Dcatalina.home=${tomcat.home}" />  </java>  </target>  </project>
  1. 编写bat文件
@ echo 先回到根目录
cd /
@ echo 再去找build.xml的目录,因为要做windows下的计划任务 要启动这个文件, 路径这么写安全一些
cd C:\AutoAntCheck
@ echo  去读我们写的properties文件
ant -propertyfile build.properties
  1. 上面说道需要杀掉一个端口号对应的进程,这里有bat文件
FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :这里写你要杀进程的端口号') DO TaskKill.exe /PID %%P /F
  1. 如果想进行windows的计划任务实现定时定点进行构建项目的话,在计划和任务中定时打开上面第3个bat文件就可以了

Ant自动构建JavaWeb相关推荐

  1. Flex Ant自动构建

    最近项目需要用的,查阅资料得之 原博文地址:Flex Ant自动构建 1.  Flex SDK Ant Flex开发者会遇到很多,比如自动构建,在一个有着N多模块,N处源码,构建过程复杂的Flex项目 ...

  2. 用Ant实现Java项目的自动构建和部署

        Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.        ...

  3. 使用 Ant 自动生成项目构建版本

    引言 对 于多版本项目,要提供新版本来跟上新功能或缺陷报告增加的速度,并同时仍然保持可接受的质量水平,可能是一项不小的挑战.构建自动化可确保准确性和消除人 为错误的可能性,从而部分地解决此问题.自动化 ...

  4. android系统自动构建,[系统集成] Android 自动构建系统

    一.简介 android app 自动构建服务器用于自动下载app代码.自动打包.发布,要建立这样的服务器,关键要解决以下几个问题: 1. android app 自动化打包 android 的打包一 ...

  5. jenkins svn tomcat ant自动部署

      Jenkins Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:  1.持续的软件版本发布/测试项目.  2.监控外部调用执行的工作.  跟其他持续集成相比, ...

  6. Concourse实战 - 监控GitHub release并自动构建镜像

    背景及需求 偶然在网上看到了一个可以多端直播推流的工具,叫Ant Media Server,但是它的安装程序并不支持我正在用的Ubuntu 22.04 LTS,同时它也没有提供制作好的Docker镜像 ...

  7. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件...

    原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html  之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...

  8. iOS应用模块化的思考及落地方案(二)模块化自动构建工具的使用

    1.0 iOS模块化中的问题 前文已经介绍了模块化的流程及一些常见的问题,我们在这里再次总结一下. 在工作中,当我们开始一个新项目的时候,最先考虑的就是模块化工作. 模块化工作的想法是很美好的,可是执 ...

  9. .net 基于Jenkins的自动构建系统开发

    先让我给描述一下怎么叫一个自动构建或者说是持续集成 : 就拿一个B/S系统的合作开发来说,在用SVN版本控制的情况下,每个人完成自己代码的编写,阶段性提交代码,然后测试-修改,最后到所有代码完工,进行 ...

最新文章

  1. 线程同步思考 - Condition模块
  2. 访问手机app怎么看路径_推荐一款手机看国内电视的app
  3. 查看安装的react-native和react版本
  4. JS ajax请求参数格式( formData 、serialize)
  5. html5 --- 特性检测
  6. opencv入门_【OpenCV入门之十八】通过形态学操作提取水平与垂直线
  7. matlab矩阵里的最大值和最小值,求助 Matlab 用MAGIC命令产生一个5阶矩阵,并求该矩阵每列的最大值、最小值、平均数、和...
  8. mysql_query 资源标识符_PHP mysql_query() 函数解析
  9. Android 开发框架xUtils3
  10. QGIS使用栅格图层
  11. 数据分析之第三方支付业务
  12. PHP怎么做斗地主,JavaScript实现斗地主游戏的思路_javascript技巧
  13. Android直播软件开发中接入腾讯IM大概流程是怎样的
  14. Window XP驱动开发(十) 驱动程序的基本结构
  15. Android: SQLite + ListView 实现 新闻 App
  16. alpine安装及使用
  17. 深入解析G1垃圾收集器与性能优化
  18. 2022-2027年中国人身保险行业市场调研及未来发展趋势预测报告
  19. 苹果计算机手机号隐藏功能,苹果手机隐藏功能大全
  20. (四)Gluster 配置

热门文章

  1. HTTP解析--无连接、无状态
  2. C语言 利用高斯消元求解方程组
  3. mysqli数据库连接
  4. MS5611气压传感器手册勘误
  5. 国际青少年计算机技能大赛英语,Chinaspeaks国际青少年英语大赛_新浪博客
  6. 服务器永久免费文件夹加密,云服务器文件夹加密
  7. 商场 商户_商场如何生存
  8. 货物进出口的实务流程
  9. java log4j 热部署_nacos作为配置中心是否可以将log4j2.xml配置在nacos上面实现动态配置...
  10. egg.js 使用笔记