ant部署详解

  • Post author:
  • Post category:其他



关于ant的配置环境变量是首先必须的

首先到 http://ant.apache.org/bindownload.cgi这里去下载ant的压缩包,上面有linux和windows专用的,我这里下的是windows系统下用的.把下在的压缩包解压放在任意目录下然后配置环境变量:1.配置ANT_HOME: (D:\apache-ant-1.7.1)这是我的目录

2.pathD:\apache-ant-1.7.1\bin)

然后进入dos界面输入ant命令显示如下信息 则证明安装成功

Buildfile: build.xml does not exist!

Build failed

我们用ant脚本语言把一个项目整合或移动到某个目录下.而这些命令都下在一个build.xml的文件中,一般把这个build.xml文件放在项目的src目录下(项目不是太大),或者某个模块的src目录下(项目由多个模块构成,比较大)我在这里只是做了个小小的例子所以把 build.xml放在项目的src目录下.使用eclipse+myeclipse 新建一个web项目就不说了,接着在src目录下建一个build.xml文件,内容如下

Java代码

1. <?xml version=”1.0″ encoding=”UTF-8″?>

2. <project name=”ant-project” default=”run” basedir=”../”>

3.     <!– 这里的basedir是 工程的目录为根目录

4.         一般basedir=”.”表示的是build.xml文件所在的相对目录为根目录即src

5.     –>

6.     <property name=”src” value=”src”/>

7.     <property name=”dest” value=”/${basedir}/WebRoot/WEB-INF/classes”/>

8.     <!– 定义发布目录 把工程copy到tomcat的工作目录下–>

9.     <property name=”webApp” value=”E:\apache-tomcat-5.5.26\webapps\ant-project”/>

10.     <echo message=”init …” />

11.     <!– =================================

12.           target: init

13.          ================================= –>

14.     <target name=”init”>

15.         <mkdir dir=”${dest}”/>

16.         <delete dir=”${src}/classes”></delete>

17.     </target>

18.     <!– =================================

19.               target: run

20.              ================================= –>

21.     <!– 编译class文件–>

22.     <target name=”compile” depends=”init”>

23.     <!– <javac srcdir=”${src}” destdir=”/${basedir}/WebRoot/WEB-INF/classes”></javac> –>

24.     </target>

25.

26.     <target name=”run” depends=”compile” description=”description”>

27.         <!–除了class文件外,其他文件拷贝到tomcat目录下–>

28.         <copy todir=”${webApp}” overwrite=”true”>

29.             <fileset dir=”${basedir}/WebRoot” excludes=”**/*.class”/>

30.         </copy>

31.         <!–将class文件打包,放到/WEB-INF/lib目录下–>

32.         <jar destfile=”${webApp}/WEB-INF/lib/test.jar”>

33.             <fileset dir=”/${basedir}/WebRoot/WEB-INF/classes”>

34.                 <include name=”**/*.class” />

35.             </fileset>

36.         </jar>

37.

38.     </target>

39.

40.

41. </project>

<?xml version=”1.0″ encoding=”UTF-8″?>

<project name=”ant-project” default=”run” basedir=”../”>

<!– 这里的basedir是 工程的目录为根目录

一般basedir=”.”表示的是build.xml文件所在的相对目录为根目录即src

–>

<property name=”src” value=”src”/>

<property name=”dest” value=”/${basedir}/WebRoot/WEB-INF/classes”/>

<!– 定义发布目录 把工程copy到tomcat的工作目录下–>

<property name=”webApp” value=”E:\apache-tomcat-5.5.26\webapps\ant-project”/>

<echo message=”init …” />

<!– =================================

target: init

================================= –>

<target name=”init”>

<mkdir dir=”${dest}”/>

<delete dir=”${src}/classes”></delete>

</target>

<!– =================================

target: run

================================= –>

<!– 编译class文件–>

<target name=”compile” depends=”init”>

<!– <javac srcdir=”${src}” destdir=”/${basedir}/WebRoot/WEB-INF/classes”></javac> –>

</target>

<target name=”run” depends=”compile” description=”description”>

<!–除了class文件外,其他文件拷贝到tomcat目录下–>

<copy todir=”${webApp}” overwrite=”true”>

<fileset dir=”${basedir}/WebRoot” excludes=”**/*.class”/>

</copy>

<!–将class文件打包,放到/WEB-INF/lib目录下–>

<jar destfile=”${webApp}/WEB-INF/lib/test.jar”>

<fileset dir=”/${basedir}/WebRoot/WEB-INF/classes”>

<include name=”**/*.class” />

</fileset>

</jar>

</target>

<target name=”native2ascii” description=”native to ascii”>

<native2ascii encoding=”gbk” dest=”${basedir}” src=”${basedir}/${build}” includes=”*.properties”    excludes=”date.js”/>

<copy file=”${etc.resources_js}/date.js” tofile=”${webroot}/scripts/date.js” />

</target>

</project>

下面简单的解释下这个文件

1.每个build文件都包含一个project标签.name属性指项目的名称,可以随你自己取.default指默认要执行的target.basedir顾名思义是工作的根目录.

2.<property>可以理解为我们写程序时的变量.name是变量的名称 value是变量的值,在下面的脚本要用到这个变量时需要使用${name}方式调用

3</target>标签是build.xml文件的核心标签.里面主要是写一些你要做的操作然后依次按照你写好的依赖关系逐步执行target. name属性是target的名称,depends属性是指,当前这个target执行时必须先把depends对应的target执行(如果depends对应的target没有执行)如果depends对应的target已执行了,则直接执行当前的target

4.<javac>就是java中的编译命令.srcdir是指需要编译的java文件的目录.destdir是指编译后的class文件存放的目录

5<copy>这里的两个属性应该很好理解,todir是copy的目标目录 ,overwrite表示是否覆盖.<fileset>文件集合.dir属性表示被copy的源文件目录.excludes表示除开什么文件类型之外的文件

6<jar>打成jar包 可以象上面那样写也可以象这样写<jar jarfile=”${${webApp}/WEB-INF/lib/test.jar}” basedir=”${dest}”/>.jarfile表示生成的jar的文件,basedir表示class文件所在的目录.

7在native2ascii元素中,src和dest这两个属性表示着路径。如果反编译后,src目录下,有多个不同的文件夹,这时使用ant来转换编码,请先想好要对哪些文件进行反编码;如果按上面的写法,将会把src目录下的所有文件夹中的所有文件进行反编码。假设,现在有com和org两个文件夹(其实是两个包),我只需要对com中的文件进行反编码,那么可以这样改写:src=”${basedir}/com” dest=”${basedir}/${build}/com”

当然ant脚本并没有这么简单.要写出一个好的ant脚本,部署一个庞大的项目,需要写出复杂的ant脚本,那是需要我们自己去在项目中运用才能有那种能力的