基于ant和svnkit的WebProject增量打包工具(一)

来源:互联网 发布:如何成为淘宝砍价师 编辑:程序博客网 时间:2024/06/07 00:28
WebProject增量打包工具在网上搜了好久,能搜到的只是打包思路,和一些零零散散的程序。既然找不到,那么就决定自己写一套增量打包工具,经过几天的摸索,终于整理出了一套结合SVN版本控制,依赖ANT的编译功能来实现WebProject的增量打包工具,先发出来给大家分享下。

      在附件中,已经上传了该工具,下面就讲讲它的使用方法。

      首先,下载工具后,解压到任意文件夹下。接下来就得为该工具配置环境变量(其实不配也行,就是以后调用麻烦点就是了^@^),比如我将其解压到E盘的根目录下,那么就得在window的环境变量中的path中配置上路径:“E:\apache-ant-1.9.2-精简版本\bin”,这样做的目的就是为了能够在dos命令下,直接调用ant的指令。

配置后,进入dos控制台,输入如下图的指令,出现红框处的提示的话,表示配置成功!

 

       然后,就是根据项目实际情况,配置编译文件,在工具中有个编译配置实例,直接参考这个,再结合实际项目做好配置就可以了。配置文件有两个,build.xml和build.properties.

       先说说build.xml内容,其实这个文件一般不用做什么修改,就可以适应目前为止的Web项目,

       直接按照序号阅读配置文件的说明,做相应修改就行

Xml代码  收藏代码
  1. <?xml version="1.0"?>  
  2. <!--1.设置basedir WebProjiect的路径,如果是.的话,就是web项目的路径是build.xml的父级路径-->  
  3. <project name="FWD_SERVER" basedir="." default="main">  
  4.         <!--2.webProject的具体编译属性的设置文件,一般和build.xml文件放在同一个目录就行,里面可以配置项目的SVN信息,导出SVN的增量文件的路径啥的!-->  
  5.     <property file="build.properties" />    
  6.         <target name="main" depends="packge">  
  7.     </target>  
  8.         <!--ant编译的支持jar-->  
  9.     <path id="supportjar">  
  10.         <fileset dir="${supportjarPath}/extlibs">  
  11.             <include name="**/*.jar" />  
  12.         </fileset>  
  13.     </path>  
  14.     <!--WebProject编译的支持jar-->  
  15.     <path id="WebCompileClasspath">  
  16.         <filelist dir="${catalinaPath}/lib">  
  17.             <file name="servlet-api.jar" />  
  18.         </filelist>  
  19.         <fileset dir="${libsPath}">  
  20.             <include name="**/*.jar" />  
  21.         </fileset>  
  22.     </path>  
  23.     <!--从SVN中导出版本差异文件的target-->   
  24.     <target name="exportSvnDiff">  
  25.         <taskdef name="svn" classpathref="supportjar" classname="cn.com.lowe.svnkit.SVNAntTask" />  
  26.         <mkdir dir="${pakagePath}" />  
  27.         <svn svnUrl="${svnUrl}" preVersion="${preVersion}" version="${version}" username="${username}" password="${password}" desDir="${pakagePath}" exportMode="${exportMode}">  
  28.         </svn>  
  29.     </target>  
  30.     <!--WebProject全量编译target-->   
  31.     <target name="compile">  
  32.         <delete dir="${classesPath}" />  
  33.         <mkdir dir="${classesPath}" />  
  34.         <javac classpathref="WebCompileClasspath" destdir="${classesPath}" includeantruntime="false" encoding="utf-8" optimize="true">  
  35.             <!--3.需要编译的源码,源码文件夹个数增加,这边也要相应增加-->  
  36.             <src path="${srcPath}" />  
  37.             <src path="${configSrcPath}" />  
  38.         </javac>  
  39.   
  40.         <copy todir="${classesPath}" verbose="true">  
  41.             <!--4.需要拷贝的源码,即源码目录下的非.java文件,源码文件夹个数增加,这边也要相应增加-->  
  42.             <fileset dir="${configSrcPath}">  
  43.                 <not>  
  44.                     <filename name="**/*.java" />  
  45.                 </not>  
  46.             </fileset>  
  47.             <fileset dir="${srcPath}">  
  48.                 <not>  
  49.                     <filename name="**/*.java" />  
  50.                 </not>  
  51.             </fileset>  
  52.         </copy>  
  53.     </target>  
  54.     <!--根据SVN的差异文件导出相应的差异classes的target-->   
  55.     <target name="packge" depends="exportSvnDiff,compile">  
  56.         <taskdef name="javacCopy" classpathref="supportjar" classname="cn.com.lowe.svnkit.JavacCopyTask" />  
  57.         <javacCopy  classesFolder="${classesPath}" exportDir="${pakagePath}">  
  58.             <!--5.源码中的增量目录,根据目录中的文件,从相应的 编译目录拷贝出编译文件到打包文件的目录下,源码文件夹个数增加,这边也要相应增加-->  
  59.             <copydir path="${srcPath}" />  
  60.             <copydir path="${configSrcPath}" />  
  61.         </javacCopy>  
  62.     </target>  
  63. </project>  

    下一个就是build.properties ,build.xml的配置属性都是从该配置信息中获取的,继续按照序号阅读,做好配置就行

   

Build.properties代码  收藏代码
  1. #==========ANT编译配置BEGIN================  
  2. #增量打包支持jar包路径  
  3. #1.增量编译工具保存的路径,如E:\apache-ant-1.9.2-精简版本,主要是为了ant命令配置相应的jar包支持  
  4. supportjarPath=E:/apache-ant-1.9.2  
  5. #打包文件导出路径  
  6. #2.增量打包后,导出的文件保存路径  
  7. pakagePath=D:\\svn  
  8. #tomcate路径,用于导入servlet.jar,如果项目中有servlet-api.jar,不配置也行  
  9. #3.tomcate服务器,weblogic服务器的路径,目录是为了给WebProjiect提供servlet-api.jar的支持,假设你将servlet-api.jar拷贝到WebProject的lib下面的话,可以不用填写  
  10. catalinaPath=E:\\workspace_lowe\\tomcatServer  
  11. #==========ANT编译配置END==================  
  12. #==========SVN导出配置信息BEGIN==============  
  13. #svnURL地址  
  14. #4.项目的SVN地址,为了导出差异文件  
  15. svnUrl=https://zhengjin/svn/android/android_plugins/  
  16. #5.svn登录名  
  17. username=lowe  
  18. #6.svn登录密码  
  19. password=000000  
  20. #7.导出文件模式 1:清空导出目录已存在的文件,再导出新文件 2:覆盖导出目录,不清空已存在的文件 3:文件非空,提示导出异常  
  21. exportMode=1  
  22.   
  23.   
  24. #8.导出的起始版本号  
  25. preVersion=12348  
  26. #9.导出的截止版本号,导出这两个版本号之间的差异文件  
  27. version=12350  
  28. #==========SVN导出配置信息END==================  
  29. #==========Web项目编译配置信息BEGIN==============  
  30. #9.编译文件存放目录-相对于basedir的路径  
  31. classesPath=mobile/WEB-INF/classes  
  32. #10.项目依赖的包路径-相对于basedir的路径,如果lib中有servlet-api.jar,就可以配置tomcat和weblogic服务器  
  33. libsPath=mobile/WEB-INF/lib  
  34. #11.项目编译源码路径-相对于basedir的路径,有时候源码路径有多个,可以配置多个源码路径属性,不过别忘了在build.xml处相应位置添加新增的源码路径  
  35. srcPath=appCode/mobile_src  
  36. configSrcPath=appCode/config  
  37. #==========Web项目编译配置信息END==============  

 

   配置如上两个文件,就可以开始执行增量编译了

   在dos命令行执行如下命令

    

   执行的结果分析如下,具体效果到pakagePath看看是否导出文件即可知道

  

 

 

下一部分将打算介绍该增量打包工具的实现机制。

原创粉丝点击