求助:如何编写一个ant的脚本?高手来说说细节吧!

aixy 2003-08-19 09:52:47
如题。
...全文
290 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
litao3029 2003-12-27
  • 打赏
  • 举报
回复
mark
stonewang 2003-08-23
  • 打赏
  • 举报
回复
http://jakarta.apache.org/
http://www.javaresearch.org/article/showarticle.jsp?column=31&thread=2268
http://ant.apache.org/
star821116 2003-08-23
  • 打赏
  • 举报
回复
转贴,原贴:
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>
iamsoloist 2003-08-23
  • 打赏
  • 举报
回复
<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>

这个地方有问题,运行时会提示“RetroGuard”类找不到:(
zhousm6 2003-08-19
  • 打赏
  • 举报
回复
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是包.

Main-Class: demo.Main

第六步:编写混淆器的列表文件script.rgs

.class demo/Main public

这样Main.class不会被混淆.

第七步:执行在包含build.xml下执行ant命令.如果src目录下是gui程序这样在build\bin下双击jar文件这样gui程序这样就可以执行了.
aixy 2003-08-19
  • 打赏
  • 举报
回复
我顶!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧