您的位置:首页 > 产品设计 > UI/UE

重拾 Ant 自动构建工具

2012-03-21 12:28 288 查看
第一次弄ant已经是一年多以前了,好久没用发现自己对Ant已经基本上没什么印象了

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

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

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

下面是我的项目结构:



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

[html] view
plaincopy

<!--

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ant 工具 java jar build class