用ANT構建java可執行程序 |
|
Ant是現在進行項目比較好的管理工具,通過Ant可以按照自己的需要來管理自己的工程. 第一步:配置自己的工具j2sdk和ant.j2sdk在http://java.sun.com下載.ant在http://www.apache.org下載.設置環境變量JAVA_HOME=E:\j2sdk1.4.1_0;和ANT_HOME=e:\ant; PATH= E:\j2sdk1.4.1_04\bin;E:\ant\bin; 第二步:ant在編譯時需要一個build.xml的文件.另外為了使程序便于移植到其他方面,做一個build.properties文件保存ant的基本屬性. Ant的基本屬性文件如下: 具體屬性如下所示: #此文檔用來設定一些常用屬性 #檔案名稱 name=HelloWorld #合成后jar的檔名 jar=${name}.jar #原始檔所在路徑 src.dir=src #資源檔所在路徑 res.dir=res #建模產物存放位置 build.dir=build #編譯后類別檔的存放位置 build.dir.classes=${build.dir}/classes #jar最終放置位置 build.dir.bin=${build.dir}/bin #未經混淆的jar檔名 build.dir.bin.jarunobfus=${build.dir.bin}/${name}-unobfus.jar #經混淆的jar檔名 build.dir.bin.jar=${build.dir.bin}/${jar} #JDK所在的路徑 java.home=E:\j2sdk1.4.1_04 #JDK內附工具所在路徑 java.home.bin=${java.home}/bin #混淆器控制檔 obfuscator.lib=retroguard.jar obfuscator.script=script.rgs 第三步:建立build.xml.用ant來編譯來它產生文件. Build.xml中具體屬性的意思為: Mkdir是建立目錄,delete是刪除目錄,javac是編譯命令,javac中子項有debug=”off”是關閉斷點調試.srcdir是原文件所在目錄,destdir是編譯后目標文件所在目錄.jar是打包命令,basedir是要打包文件所在目錄,jarfile是編譯后是沒有經過混淆器后生成的jar文件.manifest.mf是菜單文件,包含所執行的所要類.fileset求的是所要的資源文件所在目錄.java是執行混淆器,有三個命令參數,原目標jar文件,混淆后的jar文件,不混淆的清單列表.混淆器用的是Open Source的RetroGuard.在http://www.retrologic.com/下載.在CLASSPATH中設置retroguard.jar文件路徑.depends屬性是target之間相互依賴的關系.只要執行 default屬性是ant默認執行的參數. Ant 和 ant all是一樣的. <?xml version="1.0" encoding="gb2312" ?> <project name="第一個java程序" default="all" basedir="."> <!--引入位于build.properties之中的常用屬性 --> <property file="build.properties"/> <target name="prepare" description="準備工作"> <mkdir dir="${build.dir}"/> <mkdir dir="${build.dir.classes}"/> </target> <target name="cleandir" description="清除目錄"> <delete dir="${build.dir}"/> </target> <target name="compile" description="原始編譯碼" depends="prepare"> <javac debug="off" srcdir="${src.dir}" destdir="${build.dir.classes}" /> </target> <target name="package" description="包裝成jar文件" depends="compile"> <mkdir dir="${build.dir.bin}"/> <jar basedir="${build.dir.classes}" jarfile="${build.dir.bin.jarunobfus}" manifest="MANIFEST.MF"> <fileset dir="${res.dir}"/> </jar> </target> <target name="obfuscate" description="使用混淆器" depends="package"> <java fork="yes" classname="RetroGuard" classpath="${obfuscate.lib}"> <arg line="${build.dir.bin.jarunobfus}"/> <arg line="${build.dir.bin.jar}"/> <arg line="${obfuscator.script}"/> </java> </target> <target name="all" description="完成所有程序" depends="cleandir,obfuscate"> </target> </project> 第四步:編寫源文件.放到src目錄下. 第五步:編寫菜單文件manifest.mf,Main是主類.demo是包. Main-Class: demo.Main 第六步:編寫混淆器的列表文件script.rgs .class demo/Main public 這樣Main.class不會被混淆. 第七步:執行在包含build.xml下執行ant命令.如果src目錄下是gui程序這樣在build\bin下雙擊jar文件這樣gui程序這樣就可以執行了。 |