`
xumingrencai
  • 浏览: 1181620 次
文章分类
社区版块
存档分类
最新评论

重拾 Ant 自动构建工具

 
阅读更多

第一次弄ant已经是一年多以前了,好久没用发现自己对Ant已经基本上没什么印象了

虽然想要重新拿起需要花一点时间,但毕竟我之前用过这玩意儿,耍起来那是相当的方便~

就冲着这一点,花一整天的时间来回顾我都觉得值!

花了近3个小时的时间在网上找相关资料以及亲手试验,终于是有所得

下面是我的项目结构:


下面是我写的一个 生成文件:

  1. <!--
  2. project标签里面的basedir能够指定${basedir}所表示的路径。
  3. 如果不指定或者指定为“.”的话,${basedir}的值为build.xml文件所在的目录。
  4. 如果指定为“/”的话,则${basedir}取到的是磁盘的根目录~
  5. -->
  6. <!--
  7. “${basedir}/..”表示build.xml文件所在目录的上一级目录~
  8. -->
  9. <!--
  10. 注意区分xml注释和ant注释,ant支持“标签注释”和“标签属性注释”~
  11. -->
  12. <!--
  13. ant编辑按回车的时候,很多时候会不合时宜的缩进,不要管。看不下去的时候用command+shift+f来调整格式即可~
  14. -->
  15. <!--
  16. property标签value与location的区别。location=${basedir}+locationValue~
  17. -->
  18. <!--default表示默认执行的target-->
  19. <projectname="Y3wToolkit"default="jar.execute"basedir=".">
  20. <!--ant的标签注释-->
  21. <description>回顾ant</description>
  22. <!--1.定义不可再改变值的变量~-->
  23. <echomessage="1.definevariables~"/>
  24. <propertyname="projectdir"value="${basedir}"/>
  25. <propertyname="src"location="src"/>
  26. <propertyname="libs"location="libs"/>
  27. <propertyname="dist"value="${basedir}/dist"/>
  28. <propertyname="build"value="${projectdir}/build"/>
  29. <propertyname="args[0]"value="/Users/user/Desktop/Y3wFramework"/>
  30. <!--2.定义项目编译的时候,依赖的外部jar包的路径-->
  31. <echomessage="2.defineexternal.jars.path"/>
  32. <pathid="external.jars.path">
  33. <filesetdir="${libs}">
  34. <!--匹配lib目录下所有的外部jar包文件~-->
  35. <includename="**/*.jar"/>
  36. </fileset>
  37. </path>
  38. <!--3.准备工作,创建一些文件夹来放置即将生成的字节码文件!!-->
  39. <targetname="prepare"depends="echo">
  40. <echomessage="3.prepare"/>
  41. <!--如果文件夹已经存在,那么将不再创建-->
  42. <mkdirdir="${projectdir}/build"/>
  43. <mkdirdir="${projectdir}/dist"/>
  44. </target>
  45. <!--4.1.提前处理步骤,待定~-->
  46. <targetname="process1"depends="prepare">
  47. <echomessage="4.1.process1"/>
  48. </target>
  49. <!--4.2.提前处理步骤,待定~-->
  50. <targetname="process2">
  51. <echomessage="4.2.process2"/>
  52. </target>
  53. <!--5.编译src目录下的所有java文件为class文件,并将生成的class文件及包结构复制到build目录-->
  54. <targetname="compile"depends="process1,process2">
  55. <echomessage="5.compile"/>
  56. <javacfork="true"target="1.6"srcdir="${src}"destdir="${build}"debug="true">
  57. <classpathrefid="external.jars.path"/>
  58. </javac>
  59. <echomessage="compilefinished!"/>
  60. </target>
  61. <!--6.测试生成的class文件是否能正常运行~-->
  62. <targetname="class.execute"depends="compile">
  63. <echomessage="6.execute"/>
  64. <javaclassname="test"classpath="${build}"/>
  65. <javaclassname="org.bruce.convert.encoding.EncodingConvertor"classpath="${build}">
  66. <classpathrefid="external.jars.path"/>
  67. </java>
  68. </target>
  69. <!--7.将编译好的class文件打包成可执行jar文件-->
  70. <targetname="package2jar"depends="compile">
  71. <echomessage="7.package2jar"/>
  72. <!--将所依赖的外部jar包复制到build/libs目录,为下一步的打包做准备~-->
  73. <copytodir="${build}/libs">
  74. <filesetdir="${libs}">
  75. <!--匹配lib目录下所有的外部jar包文件~-->
  76. <includename="**/*.jar"/>
  77. </fileset>
  78. </copy>
  79. <jardestfile="${dist}/EncodingConvertor.jar"basedir="${build}">
  80. <!--设置所要生成的manifest.mf文件的键值对~-->
  81. <manifest>
  82. <attributename="Created-By"value="BruceYang"/>
  83. <attributename="Class-Path"value="libs"/>
  84. <attributename="Main-Class"value="org.bruce.convert.encoding.EncodingConvertor"/>
  85. </manifest>
  86. <!--将所依赖的外部jar包的class以及manifest.mf文件
  87. 抽取出来放进最终要生成的jar文件里面-->
  88. <zipfilesetexcludes="META-INF/*.SF"src="./libs/commons-logging-1.1.1.jar"/>
  89. </jar>
  90. </target>
  91. <!--8.测试生成的jar文件能够否正常运行~-->
  92. <targetname="jar.execute"depends="package2jar">
  93. <echomessage="8.jar.execute"/>
  94. <!--使用1个jar文件(用jarfat打包为一个)
  95. ant中以参数带空格的java方式运行一个jar程序。
  96. 参数jar/classname不可同时用,用jar的时候要有入口类,这里用的是参数jar-->
  97. <javafork="true"failonerror="true"jar="${dist}/EncodingConvertor.jar">
  98. <argvalue="${args[0]}"/>
  99. </java>
  100. </target>
  101. <targetname="echo">
  102. <!--一个显示信息的标记,相信你可以查看helpdoc知道它怎么用-->
  103. <echomessage="ant取得当前项目的名称:${ant.project.name}"/>
  104. <echomessage="${src}"/>
  105. <echomessage="${libs}"/>
  106. <echomessage="${build}"/>
  107. <echomessage="${dist}"/>
  108. <!--虽然src2没有定义,但不会报错,会打印${src2}-->
  109. <echomessage="${src2}"/>
  110. </target>
  111. </project>

下面是 ant 执行过程中的控制台输出

Buildfile:/Users/user/Projects/Eclipse/workspace1/Y3wTookit/build.xml

[echo] 1.define variables~

[echo] 2.define external.jars.path

echo:

[echo] ant 取得当前项目的名称:Y3wToolkit

[echo] /Users/user/Projects/Eclipse/workspace1/Y3wTookit/src

[echo] /Users/user/Projects/Eclipse/workspace1/Y3wTookit/libs

[echo] /Users/user/Projects/Eclipse/workspace1/Y3wTookit/build

[echo] /Users/user/Projects/Eclipse/workspace1/Y3wTookit/dist

[echo] ${src2}

prepare:

[echo] 3.prepare

process1:

[echo] 4.1.process1

process2:

[echo] 4.2.process2

compile:

[echo] 5.compile

[javac] Compiling 1 source file to /Users/user/Projects/Eclipse/workspace1/Y3wTookit/build

[echo] compile finished!

package2jar:

[echo] 7.package2jar

[jar] Building jar: /Users/user/Projects/Eclipse/workspace1/Y3wTookit/dist/EncodingConvertor.jar

jar.execute:

[echo] 8.jar.execute

[java]---- The parameter used is passed in(通过参数传入的)! ----

[java] 输入项目文件夹为 "文件夹"!

[java] 该文件夹的大小为: 14734601 bytes

[java] 该文件夹的大小为: 14.052011 MB

[java] 该文件夹的子文件数目为(不包含文件夹): 476

[java] 该文件夹的子文件数目为(包含文件夹): 646

[java] MyPDF.java

[java] BubbleSort.java

[java] HeapSort.java

[java] InsertSort.java

[java] MergerSort.java

[java] QuickSort.java

[java] SelectionSort.java

[java] SequenceQuery.java

[java] AutomateByRobot.java

[java] CodeCleaner.java

[java] CppProjectCleaner.java

[java] CutLineHeadUsage.java

[java] RemoveAllEmptyLinesUsage.java

[java] JarDir.java

[java] JarRead.java

[java] ZipUtil.java

[java] PrefsDemo.java

[java] Registery.java

[java] ConfigMannager.java

[java] PropManager.java

[java] String8Xml.java

[java] DES_Decrypt.java

[java] DES_Encrypt.java

[java] DES_GenKey.java

[java] IDesUtil.java

[java] IDesUtilExt.java

[java] IDesUtilExtImpl.java

[java] IDesUtilUsage.java

[java] IDesUtilUsageII.java

[java] RSA_Decrypt.java

[java] RSA_Encrypt.java

[java] RSA_GenKey.java

[java] IRsaUtil.java

[java] IRsaUtilExt.java

[java] IRsaUtilExtImpl.java

[java] IRsaUtilUsage.java

[java] Test.java

[java] Copy.java

[java] CopyBinaryFile.java

[java] ObjectIO.java

[java] TestSequenceInputStream.java

[java] ITreeFile.java

[java] ITreeFileImpl.java

[java] ListDirsAndFiles.java

[java] ListOnlyFile.java

[java] GetFilePathFromDropAction.java

[java] HtmlDemo.java

[java] JFrameIcon.java

[java] JImagePane.java

[java] JLabelMarquee.java

[java] JLabelTime.java

[java] ListenerAndRunnable.java

[java] TabbedPaneDemo.java

[java] TestEvent.java

[java] UserTipDialog.java

[java] ImageJPanel.java

[java] JButtonBlue.java

[java] JButtonGreen.java

[java] JButtonSound.java

[java] JTableBgImg.java

[java] Clock.java

[java] Drawer.java

[java] DrawGraphics.java

[java] FunctionChart.java

[java] FunnyWindow.java

[java] GuiCamera.java

[java] TaskList.java

[java] TaskListCon.java

[java] yaoketing111.java

[java] BaseJFrame.java

[java] BaseJFrameDerived.java

[java] MyTextArea.java

[java] AntiliasShapedFrame.java

[java] Balloon.java

[java] BalloonLink.java

[java] BrokenLink.java

[java] Ground.java

[java] InvisibleLink.java

[java] MainUI.java

[java] Sky.java

[java] SwingIsKnife.java

[java] TanslucentJButtonDemo.java

[java] TranslucentFrameDemo.java

[java] UnregularWindow.java

[java] ChangeImageSize.java

[java] CutImage.java

[java] ImageUtils.java

[java] ReadImage3Methods.java

[java] TestImageIO.java

[java] TestReadImage.java

[java] IntegerDocument.java

[java] NumericInput.java

[java] NumericVerifier.java

[java] CheckMyMailBox.java

[java] ReceiveEmail.java

[java] SendHTMLMail.java

[java] SendMail.java

[java] SendMailWithAttchment.java

[java] SimplifiedSendMail.java

[java] SimplifiedSendMail_Yeah.java

[java] ViewEmailAll.java

[java] CheckMyMailBox.java

[java] GetAddressViaMail.java

[java] NewMail.java

[java] NewMailFetcher.java

[java] NewMailFetcherEx.java

[java] NewMailFetcherEx1.java

[java] NewMailFetcherEx2.java

[java] ReciveIMAPMail.java

[java] SendHTMLMail.java

[java] SendIPAddress.java

[java] SendMail.java

[java] SendMailWithAttchment.java

[java] SimplifiedSendMail_Yeah.java

[java] TestQueue.java

[java] ViewEmailAll.java

[java] Base64Security.java

[java] Md5Builder.java

[java] Md5DigestUtil.java

[java] PasswordSecurity.java

[java] ShowSystemDefaultEncoding.java

[java] CreateExcel.java

[java] MyExcel.java

[java] MyExcelTest.java

[java] ReadExcel.java

[java] UpdateExcel.java

[java] GetHardwareInfoTest.java

[java] GetMacAddr.java

[java] HDUtil.java

[java] GetAllSystemProperties.java

[java] GetSystemProperties.java

[java] AudioPlayer.java

[java] AudioPlayerDerived.java

[java] AudioPlayerEx.java

[java] ReceiveThread.java

[java] SendThread.java

[java] T1.java

[java] T2.java

[java] TestOnlineVoice.java

[java] IColor.java

[java] IFrequentlyUsedSQL.java

[java] StaticValue.java

[java] AppendString2Txt.java

[java] SessionLabel.java

[java] TestCutString.java

[java] TestSubstring.java

[java] StopThread.java

[java] ByteUtil.java

[java] CmdExec.java

[java] DecompileUtil.java

[java] FileCopyUtil.java

[java] FileUtil.java

[java] HotkeyUtil.java

[java] IPTimeStamp.java

[java] OracleDBUtil.java

[java] Pinyin.java

[java] PositionAdjustUtil.java

[java] RGB2YUV.java

[java] TimeUtil.java

[java] ParseXMLWithDOM.java

[java] ParseXMLWithDOM2.java

[java] ReadXMLFile.java

[java] ReadXMLFile2.java

[java] javaFileCount = 163

[java]---- Convert Successfully!!! ----

BUILD SUCCESSFUL

Total time: 3 seconds


分享到:
评论

相关推荐

    Ant.自动构建工具

    Ant.自动构建工具

    ant工具可以构建web应用

    ant工具可以构建web应用,ant工具可以构建web应用ant工具可以构建web应用ant工具可以构建web应用ant工具可以构建web应用ant工具可以构建web应用ant工具可以构建web应用ant工具可以构建web应用ant工具可以构建web应用

    Ant自动化测试构建

    一步步教你实现Ant工具和Junit工具的结合

    自动构建ant

    自动构建ant 详细说明见压缩包里文档,里面已写得很详细了

    Ant工具的使用及Ant介绍

    ant是构建工具 2,什么是构建 概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个 3,ant的好处 跨平台 --因为ant是使用java实现的,所以它跨...

    android使用ant自动构建示例

    android使用ant自动构建,打包,更多参考文章 http://www.67tgb.com/?p=629

    开发工具 ant-1.9.6

    开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6...

    ant一键构建工具

    使用Ant从svn更新项目、编译、打包,一键完成。

    Ant 项目构建教程

    Ant 项目构建教程,可以正确指导如何搭建。

    ANT自动更新工具

    使用起来更很方便,能够快速的找到自己想要的工具

    利用ant脚本 自动构建svn增量.docx

    利用ant脚本 自动构建svn增量/全量 系统程序升级包 标签: antsvn自动化测试发布  分类: ant 不会用ant打包、部署项目的工程师,不是一个好程序员(测试) 副标题:利用ant脚本 自动构建svn增量/全量 系统程序...

    ant 构建环境使用

    ant-1.9.6.jar的构建工具,需要使用的朋友自行下载 具体的环境变量配置以及使用方法,可以去我博客中找,在此不进行详述了

    ANT构建的一个问题

    NULL 博文链接:https://loveseaside.iteye.com/blog/695644

    Ant自动打包用的.

    Ant自动打包用的.

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

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

    Ant自动构建总结

    NULL 博文链接:https://yushan.iteye.com/blog/389436

    ant构建工具

    ant是构建工具,概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个

    ant构建web项目

    ant 自动化构建eclipse web项目, 并且打包发布,启动tomcat和浏览器

    Ant基于Java的构建工具.ppt

    Ant基于Java的构建工具.ppt

    ant 1.6工具下载

    ant,构建工具,这是一个很好用的构建工具

Global site tag (gtag.js) - Google Analytics