第一次弄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-->
- <project name="Y3wToolkit" default="jar.execute" basedir=".">
- <!-- ant 的标签注释 -->
- <description>回顾 ant</description>
- <!-- 1.定义不可再改变值的变量~ -->
- <echo message="1.define variables~" />
- <property name="projectdir" value="${basedir}" />
- <property name="src" location="src" />
- <property name="libs" location="libs" />
- <property name="dist" value="${basedir}/dist" />
- <property name="build" value="${projectdir}/build" />
- <property name="args[0]" value="/Users/user/Desktop/Y3wFramework" />
- <!-- 2.定义项目编译的时候, 依赖的外部 jar 包的路径 -->
- <echo message="2.define external.jars.path" />
- <path id="external.jars.path">
- <fileset dir="${libs}">
- <!-- 匹配 lib 目录下所有的外部 jar 包文件~ -->
- <include name="**/*.jar" />
- </fileset>
- </path>
- <!-- 3.准备工作,创建一些文件夹来放置即将生成的字节码文件!! -->
- <target name="prepare" depends="echo">
- <echo message="3.prepare" />
- <!-- 如果文件夹已经存在,那么将不再创建 -->
- <mkdir dir="${projectdir}/build" />
- <mkdir dir="${projectdir}/dist" />
- </target>
- <!-- 4.1.提前处理步骤,待定~ -->
- <target name="process1" depends="prepare">
- <echo message="4.1.process1" />
- </target>
- <!-- 4.2.提前处理步骤,待定~ -->
- <target name="process2">
- <echo message="4.2.process2" />
- </target>
- <!-- 5.编译 src 目录下的所有 java 文件为 class 文件,并将生成的 class 文件及包结构复制到 build 目录 -->
- <target name="compile" depends="process1,process2">
- <echo message="5.compile" />
- <javac fork="true" target="1.6" srcdir="${src}" destdir="${build}" debug="true">
- <classpath refid="external.jars.path" />
- </javac>
- <echo message="compile finished!" />
- </target>
- <!-- 6.测试生成的 class 文件是否能正常运行~ -->
- <target name="class.execute" depends="compile">
- <echo message="6.execute" />
- <java classname="test" classpath="${build}" />
- <java classname="org.bruce.convert.encoding.EncodingConvertor" classpath="${build}">
- <classpath refid="external.jars.path" />
- </java>
- </target>
- <!-- 7.将编译好的 class 文件打包成可执行 jar 文件 -->
- <target name="package2jar" depends="compile">
- <echo message="7.package2jar" />
- <!-- 将所依赖的外部 jar 包复制到 build/libs 目录,为下一步的打包做准备~ -->
- <copy todir="${build}/libs">
- <fileset dir="${libs}">
- <!-- 匹配 lib 目录下所有的外部 jar 包文件~ -->
- <include name="**/*.jar" />
- </fileset>
- </copy>
- <jar destfile="${dist}/EncodingConvertor.jar" basedir="${build}">
- <!-- 设置所要生成的 manifest.mf 文件的键值对~ -->
- <manifest>
- <attribute name="Created-By" value="Bruce Yang" />
- <attribute name="Class-Path" value="libs" />
- <attribute name="Main-Class" value="org.bruce.convert.encoding.EncodingConvertor" />
- </manifest>
- <!-- 将所依赖的外部 jar 包的 class 以及 manifest.mf 文件
- 抽取出来放进最终要生成的 jar 文件里面 -->
- <zipfileset excludes="META-INF/*.SF" src="./libs/commons-logging-1.1.1.jar" />
- </jar>
- </target>
- <!-- 8.测试生成的 jar 文件能够否正常运行~ -->
- <target name="jar.execute" depends="package2jar">
- <echo message="8.jar.execute" />
- <!-- 使用1个jar文件(用jar fat打包为一个)
- ant中以参数带空格的java方式运行一个jar程序。
- 参数jar/classname不可同时用,用jar的时候要有入口类 ,这里用的是参数jar -->
- <java fork="true" failonerror="true" jar="${dist}/EncodingConvertor.jar">
- <arg value="${args[0]}" />
- </java>
- </target>
- <target name="echo">
- <!--一个显示信息的标记,相信你可以查看helpdoc知道它怎么用-->
- <echo message="ant 取得当前项目的名称:${ant.project.name}" />
- <echo message="${src}" />
- <echo message="${libs}" />
- <echo message="${build}" />
- <echo message="${dist}" />
- <!-- 虽然src2没有定义,但不会报错,会打印${src2} -->
- <echo message="${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