|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1731323
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2010/5/15 5:41 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [轉貼]如編寫一個 ant 的腳本
- http://www.csdn.net/develop/article/20/20474.shtm
這篇文章可能有你想要的東西: 用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是包.
第六步:編寫混淆器的列表文件script.rgs
這樣Main.class不會被混淆.
第七步:執行在包含build.xml下執行ant命令.如果src目錄下是gui程序這樣在build\bin下雙擊jar文件這樣gui程序這樣就可以執行了.
轉貼,原貼: http://www.java-cn.com/technology/technology_detail.jsp?id=1842 下面是一個 ANT 工程文件的示例 build.xml,供大家參考。更多的使用方法請參閱 ANT 自帶的文檔。
<?xml version="1.0"?>
<!--
==========================================================================
xiaoyoung BBS build file
Legal: Copyright (c) 2000,2001,2002 Young
==============================================================================
-->
<project default="dist" basedir=".">
<property name="name" value="bbs"/>
<property name="version" value="1"/>
<property name="year" value="2002"/>
<property name="language" value="en"/>
<!--
Give user a chance to override without editing this file
(and without typing -D each time he compiles it)
-->
<property file=".ant.properties"/>
<property file="${user.home}/.ant.properties"/>
<!--
There should be no need to override default compiler but need to change
javac task to run without this
-->
<property name="build.compiler" value="jikes"/>
<!--
<property name="build.compiler" value="classic"/>
-->
<!--
these are here only for those who use jikes compiler. For other
developers this part makes no difference.
-->
<property name="build.compiler.emacs" value="on"/>
<property name="build.compiler.pedantic" value="true"/>
<property name="build.compiler.depend" value="true"/>
<property name="build.compiler.fulldepend" value="true"/>
<property name="debug" value="on"/>
<property name="optimize" value="off"/>
<property name="deprecation" value="off"/>
<!--
===================================================================
Set the properties for intermediate directory
===================================================================
-->
<property name="build.dir" value="build"/>
<property name="build.classes" value="${build.dir}/classes"/>
<property name="build.webapps" value="${build.dir}/webapps"/>
<property name="dist.dir" value="dist"/>
<property name="dist.classes" value="${dist.dir}/WEB-INF/classes"/>
<property name="src.dir" value="src"/>
<property name="classes.dir" value="${src.dir}/classes"/>
<property name="webapps.dir" value="${src.dir}/webapps"/>
<path id="project.class.path">
<pathelement path="${java.class.path}" />
<pathelement path="${build.classes}" />
</path>
<!-- =================================================================== -->
<!-- Help on usage -->
<!-- =================================================================== -->
<target name="usage">
<echo message=""/>
<echo message=""/>
<echo message="xiaoyoung BBS Build file"/>
<echo message="-------------------------------------------------------------"/>
<echo message=""/>
<echo message=" available targets are:"/>
<echo message=""/>
<echo message=" compile --> compiles the source code"/>
<echo message=" dist --> generates the distribution, packed"/>
<echo message=" clean --> cleans up the directory"/>
<echo message=""/>
<echo message=" See the comments inside the build.xml file for more details."/>
<echo message="-------------------------------------------------------------"/>
<echo message=""/>
<echo message=""/>
</target>
<!-- =================================================================== -->
<!-- Building
<!-- =================================================================== -->
<target name="prepare">
<mkdir dir="${build.classes}"/>
</target>
<target name="compile" depends="prepare">
<javac destdir="${build.classes}"
optimize="${optimize}"
deprecation="${deprecation}">
<classpath refid="project.class.path" />
<src path="${classes.dir}" />
</javac>
</target>
<target name="dist" depends="compile">
<mkdir dir="${dist.dir}" />
<copy todir="${dist.dir}" >
<fileset dir="${webapps.dir}" />
</copy>
<mkdir dir="${dist.classes}" />
<copy todir="${dist.classes}" >
<fileset dir="${build.classes}" />
</copy>
</target>
<!-- =================================================================== -->
<!-- Cleans everything -->
<!-- =================================================================== -->
<target name="setup-properties" >
<tstamp/>
<property name="dist.dir" value="dist"/>
</target>
<target name="clean" depends="setup-properties">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
<delete verbose="true">
<fileset dir="." includes="**/*~" defaultexcludes="no"/>
<fileset dir="." includes="**/*.bak"/>
</delete>
</target>
</project>
原文出處:求助:如何编写一个ant的脚本?高手来说说细节吧! Java / J2SE / 基础类 - CSDN社区 community.csdn.net
|
|
討論串
|