第一次弄ant已经是一年多以前了,好久没用发现自己对Ant已经基本上没什么印象了
虽然想要重新拿起需要花一点时间,但毕竟我之前用过这玩意儿,耍起来那是相当的方便~
就冲着这一点,花一整天的时间来回顾我都觉得值!
花了近3个小时的时间在网上找相关资料以及亲手试验,终于是有所得
下面是我的项目结构:
下面是我写的一个 生成文件:
- <!--
- project标签里面的basedir能够指定${basedir}所表示的路径。
- 如果不指定或者指定为“.”的话,${basedir}的值为build.xml文件所在的目录。
- 如果指定为“/”的话,则${basedir}取到的是磁盘的根目录~
- -->
- <!--
- “${basedir}/..”表示build.xml文件所在目录的上一级目录~
- -->
- <!--
- 注意区分xml注释和ant注释,ant支持“标签注释”和“标签属性注释”~
- -->
- <!--
- ant编辑按回车的时候,很多时候会不合时宜的缩进,不要管。看不下去的时候用command+shift+f来调整格式即可~
- -->
- <!--
- property标签value与location的区别。location=${basedir}+locationValue~
- -->
- <!--default表示默认执行的target-->
- <projectname="Y3wToolkit"default="jar.execute"basedir=".">
- <!--ant的标签注释-->
- <description>回顾ant</description>
- <!--1.定义不可再改变值的变量~-->
- <echomessage="1.definevariables~"/>
- <propertyname="projectdir"value="${basedir}"/>
- <propertyname="src"location="src"/>
- <propertyname="libs"location="libs"/>
- <propertyname="dist"value="${basedir}/dist"/>
- <propertyname="build"value="${projectdir}/build"/>
- <propertyname="args[0]"value="/Users/user/Desktop/Y3wFramework"/>
- <!--2.定义项目编译的时候,依赖的外部jar包的路径-->
- <echomessage="2.defineexternal.jars.path"/>
- <pathid="external.jars.path">
- <filesetdir="${libs}">
- <!--匹配lib目录下所有的外部jar包文件~-->
- <includename="**/*.jar"/>
- </fileset>
- </path>
- <!--3.准备工作,创建一些文件夹来放置即将生成的字节码文件!!-->
- <targetname="prepare"depends="echo">
- <echomessage="3.prepare"/>
- <!--如果文件夹已经存在,那么将不再创建-->
- <mkdirdir="${projectdir}/build"/>
- <mkdirdir="${projectdir}/dist"/>
- </target>
- <!--4.1.提前处理步骤,待定~-->
- <targetname="process1"depends="prepare">
- <echomessage="4.1.process1"/>
- </target>
- <!--4.2.提前处理步骤,待定~-->
- <targetname="process2">
- <echomessage="4.2.process2"/>
- </target>
- <!--5.编译src目录下的所有java文件为class文件,并将生成的class文件及包结构复制到build目录-->
- <targetname="compile"depends="process1,process2">
- <echomessage="5.compile"/>
- <javacfork="true"target="1.6"srcdir="${src}"destdir="${build}"debug="true">
- <classpathrefid="external.jars.path"/>
- </javac>
- <echomessage="compilefinished!"/>
- </target>
- <!--6.测试生成的class文件是否能正常运行~-->
- <targetname="class.execute"depends="compile">
- <echomessage="6.execute"/>
- <javaclassname="test"classpath="${build}"/>
- <javaclassname="org.bruce.convert.encoding.EncodingConvertor"classpath="${build}">
- <classpathrefid="external.jars.path"/>
- </java>
- </target>
- <!--7.将编译好的class文件打包成可执行jar文件-->
- <targetname="package2jar"depends="compile">
- <echomessage="7.package2jar"/>
- <!--将所依赖的外部jar包复制到build/libs目录,为下一步的打包做准备~-->
- <copytodir="${build}/libs">
- <filesetdir="${libs}">
- <!--匹配lib目录下所有的外部jar包文件~-->
- <includename="**/*.jar"/>
- </fileset>
- </copy>
- <jardestfile="${dist}/EncodingConvertor.jar"basedir="${build}">
- <!--设置所要生成的manifest.mf文件的键值对~-->
- <manifest>
- <attributename="Created-By"value="BruceYang"/>
- <attributename="Class-Path"value="libs"/>
- <attributename="Main-Class"value="org.bruce.convert.encoding.EncodingConvertor"/>
- </manifest>
- <!--将所依赖的外部jar包的class以及manifest.mf文件
- 抽取出来放进最终要生成的jar文件里面-->
- <zipfilesetexcludes="META-INF/*.SF"src="./libs/commons-logging-1.1.1.jar"/>
- </jar>
- </target>
- <!--8.测试生成的jar文件能够否正常运行~-->
- <targetname="jar.execute"depends="package2jar">
- <echomessage="8.jar.execute"/>
- <!--使用1个jar文件(用jarfat打包为一个)
- ant中以参数带空格的java方式运行一个jar程序。
- 参数jar/classname不可同时用,用jar的时候要有入口类,这里用的是参数jar-->
- <javafork="true"failonerror="true"jar="${dist}/EncodingConvertor.jar">
- <argvalue="${args[0]}"/>
- </java>
- </target>
- <targetname="echo">
- <!--一个显示信息的标记,相信你可以查看helpdoc知道它怎么用-->
- <echomessage="ant取得当前项目的名称:${ant.project.name}"/>
- <echomessage="${src}"/>
- <echomessage="${libs}"/>
- <echomessage="${build}"/>
- <echomessage="${dist}"/>
- <!--虽然src2没有定义,但不会报错,会打印${src2}-->
- <echomessage="${src2}"/>
- </target>
- </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