`

Ant的安装和使用

阅读更多
ant是jakarta一个非常好的OpenSource子项目,是基于java的编译工具。下面简单介绍一下在linux环境中如何安装ant:

  1.下载
  从 http://ant.apache.org/bindownload.cgi 可以下载最新的tar包:apache-ant-1.6.2.tar.gz,如果是windows环境则是zip文件,解压后,在系统环境变量里设置 ANT_HOME为f:\project\tools\apache-ant-1.6.2,并将f:\project\tools\apache- ant-1.6.2\bin目录添加到classpath中,然后就可以使用了

  2./l安装,解压到/usrocal下
> tar zxpvf apache-ant-1.6.2.tar.gz
> ln -s apache-ant-1.6.2 ant

  3.设置环境
  将ANT_HOME设置到当前用户的.bash_profile文件/home/admin/.bash_profile

[admin@tangtang home]$ su - admin
[admin@tangtang home]$ vi .bash_profile
export ANT_HOME=/usr/local/ant
export PATH=/usr/local/ant/bin:$PATH

  如果是windows环境,需要设置%ANT_HOME%,并把%ANT_HOME%\bin目录全路径加入到%path%中

  4.测试
  用ant命令测试运行情况
[admin@tangtang home]$ ant
Buildfile: build.xml does not exist!
Build failed

[admin@tangtang home]$ ant -version
Apache Ant version 1.6.2 compiled on July 16 2004

  若出现这样的错误:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher
  这是linux系统默认安装了一些ant的lib,修改 /etc/ant.conf中 ANT_HOME=/usr/share/ant 为你正确安装ant的地址,如 /usr/local/ant

  5、build脚本
  如果是在linux环境中,下面是build脚本的一个范例:

#build脚本
#! /bin/sh
# 进入到上级目录
cd `dirname $0`/..
# 获取当前目录为PROJECT_HOME
PROJECT_HOME=`pwd`
# 设置JAVA_HOME
export JAVA_HOME=/usr/cyber/java
# 得到CLASSPATH
CLASSPATH1=$CLASSPATH
# 添加CLASSPATH
CLASSPATH=${PROJECT_HOME}\webapps\WEB-INF\conf:${PROJECT_HOME}\webapps\WEB-INF\classes:$CLASSPATH
# ant build,-buildfile 参数,是使用自定义的build.xml文件,$@是参数数组
/usr/local/ant/bin/ant -buildfile ${PROJECT_HOME}/build/build.xml "$@"
# build脚本结束


  如果是在windows环境中,下面是build.bat脚本的一个范例:

# build.bat
# 关闭echo显示
@echo off
# 设置%JAVA_HOME%
if "%JAVA_HOME%"=="" set JAVA_HOME=f:\tools\java
# 设置%ANT_HOME%
if "%ANT_HOME%"==""  set ANT_HOME=f:\tools\ant
# 设置PROJECT_HOME
set PROJECT_HOME = %CD%\..
set CLASSPATH_BAK=%CLASSPATH%
set CLASSPATH=
# 执行build
%ANT_HOME%\bin\ant.bat -buildfile ..\build\build.xml %1 %2 %3 %4 %5 %6 %7 %8 %9


  6、build配置文件
  在${PROJECT_HOME}/build目录下面,需要定义两个文件,一个是build.properties,一个是build.xml
  build.properties文件定义了build的一些常量

# build.properties
project        = tangtang
version        = 1.1.1
# 采用classic编译,即采用ant编译
build.compiler = classic
# 采用jikes编译
#build.compiler = jikes

year           = 2004
debug          = on
optimize       = on
deprecation    = on

os             = linux
author         = tangtang
email          = syvin_tom@hotmail.com
url            = www.tangtang.org
company        = tangtang.org


  build.xml文件是ant编译的主要配置文件,ant功能强大,需要通过相应的配置项来表现。

<?xml version="1.0" encoding="gb2312"?>

<!-- Build file for project -->

<project name="cyber" default="jar" basedir=".">
  <property file="${user.home}/.ant.properties" />
  <!-- ant build properties -->
  <property file="build.properties"/>

  <property name="build.dir"  value=".."/>
  <property name="build.src"  value="${build.dir}/webapps/WEB-INF/src/java"/>
  <property name="build.dest" value="${build.dir}/webapps/WEB-INF/classes"/>
  <property name="build.lib"  value="${build.dir}/webapps/WEB-INF/lib"/>
  <property name="build.ext"  value="./lib"/>
  <property name="build.tpl"  value="${build.dir}/webapps/WEB-INF/templates"/>
  <property name="build.encoding" value="gb2312"/>  

  <property name="src.java.dir" value="../src/java"/>
  <property name="javadoc.destdir" value="../docs/api"/>
  <property name="javadoc.link" value="http://www.tangtang.org/java/docs/api/"/>
  <property name="final.name" value="${project}-${version}"/>
  <property name="dist.root" value="${build.dir}/dist"/>
  <property name="dist.dir" value="${dist.root}/${final.name}"/>

  <path id="classpath">    
    <pathelement path="${java.class.path}/"/>
    <fileset dir="${build.lib}">    
      <include name="*.jar"/>
    </fileset>    
    <fileset dir="${build.ext}">    
      <include name="*.jar"/>
    </fileset>    
  </path>
  
  <property name="classpath" refid="classpath"/>
  <!-- =================================================================== -->
  <!-- prints the environment                                        -->
  <!-- =================================================================== -->
  <target name="env">    
    <echo message="build.compiler = ${build.compiler}"/>
    <echo message="java.home = ${java.home}"/>
    <echo message="user.home = ${user.home}"/>
    <!--echo message="java.class.path = ${java.class.path}"/-->
    <echo message="classpath = ${classpath}"/>
  </target>

  <!-- =================================================================== -->
  <!-- Prepares the build directory                                        -->
  <!-- =================================================================== -->
  <target name="prepare" depends="env">
      
    <tstamp/>
    <filter token="year" value="${year}"/>
    <filter token="version" value="${version}"/>
    <filter token="date" value="${DSTAMP}"/>            
    <!--
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.dest}"/>
    <mkdir dir="${build.src}"/>
    -->
    <!--  chose a class that's from j2ee.jar -->
    <available  classname="javax.sql.DataSource"
       property="J2EE.present">
       <classpath refid = "classpath"/> 
    </available>
  </target>
  <target name="J2EE-error" depends="prepare"  unless="J2EE.present">
  
<echo>
********************************************************
**
**  J2EE has not been found and is needed for the target
**  you have chosen
**
**  Since CLASSPATH is an evil idea, just link or drop
**  a copy of your j2ee.jar into build/lib directory.
**
*********************************************************
</echo>
</target>

  <target name="init">
      <echo>
      build init
      build compile
      </echo>
    <mkdir dir="${build.dir}/data"/>      
    <mkdir dir="${build.dir}/logs"/>
    <mkdir dir="${build.dir}/dist"/>         
  </target>

  <target name="jar" depends="compile">
    <mkdir dir="${dist.root}"/>
    <delete dir="${dist.root}/${project}-${version}.jar"/>  
    <jar jarfile="${dist.root}/${project}-${version}.jar">
      <fileset dir="${build.dest}">
        <include  name="org/tangtang/**"/>
        <exclude  name="org/tangtang/test/**"/>        
      </fileset>     
    </jar>
  </target>

  <target name="srcjar" depends="prepare">
    <delete dir="${dist.root}/${project}-${version}-src.jar"/>
    <jar jarfile="${dist.root}/${project}-${version}-src.jar">
      <fileset dir="${build.src}">
        <include  name="org/tangtang/**"/>
        <include  name="org/tangtang/test/**"/>
      </fileset>     
    </jar>
  </target>

  <target name="tpl" depends="env">    
    <jar jarfile="${dist.root}/${project}-${version}-tpl.jar">
      <fileset dir="${build.tpl}">
        <include  name="tangtang/**"/>
      </fileset>
    </jar>
  </target>
  
  <target name="javadocs">
    <mkdir dir="${build.dir}/docs/api"/>
    <javadoc
      sourcepath="${build.src}"
      overview="${build.dir}/docs/overview.html"
      packagenames="org.tangtang.*"
      destdir="${build.dir}/docs/api"
      encoding="${build.encoding}"
      author="true"
      version="true"
      use="true"
      link="${javadoc.link}"
      windowtitle="${project} ${version} API"
      doctitle="${project} ${version} API"
      bottom="Copyright &copy; ${year} tangtang.org.  All Rights Reserved."
      >
      <tag name="todo" description="To Do:"/>
    </javadoc>
  </target>
  
  <target name="poolman" depends="prepare">
    <jar jarfile="${dist.root}/poolman.jar">
      <fileset dir="${build.dest}">
        <include  name="com/codestudio/**"/>
      </fileset>     
    </jar>
  </target>      
  
  <target name="nightly" depends="prepare">
      <tstamp/>        
      <jar jarfile="${dist.root}/nightly/${project}-${version}-${DSTAMP}-src.jar">
    <fileset dir="${build.src}">
        <include  name="org/tangtang/**"/>
    </fileset>
    </jar>
  </target>  
  
  <target name="compile" depends="prepare">    
    <mkdir dir="${build.dest}"/>

    <!-- 检查依赖性 -->
    <depend srcdir="${build.src}"
            destdir="${build.dest}"
            cache="${build.dest}">
        <classpath refid="classpath"/>
    </depend>
    
    <javac srcdir="${build.src}"
      destdir="${build.dest}"
      debug="${debug}"
      deprecation="${deprecation}"
      optimize="${optimize}">      
      <classpath refid="classpath"/>
    </javac>
  </target>

  <target name="clean">
    <delete>
        <fileset dir="${build.dest}">
            <include name="**/*.class"/>
        </fileset>
    </delete>    
  </target>

  <target name="clean_dist">
    <delete>
      <fileset dir="${dist.root}" includes="*"/>
    </delete>
    <delete dir="${dist.dir}" quiet="false"/>    
  </target>
  
  <target name="deploy" depends="jar">
    <mkdir dir="${dist.dir}/data"/>
    <mkdir dir="${dist.dir}/logs"/>    

    <copy todir="${dist.dir}/bin">
      <fileset dir="${build.dir}/bin">
        <include name="*"/>
      </fileset>
    </copy>    

      <fixcrlf srcdir="${dist.dir}/bin" eol="lf" eof="remove"
       includes="**/*"
       excludes="**/*.bat"
      />

    <copy todir="${dist.dir}/conf">
      <fileset dir="${build.dir}/conf">
        <include name="templates/*"/>
        <exclude name="*"/>
        <exclude name="**/*.bak"/>
        <exclude name="**/bak/**"/> 
      </fileset>
    </copy>    

    <copy todir="${dist.dir}/build">
      <fileset dir="${build.dir}/build">
        <include name="*"/>
        <include name="lib/*"/>
        <exclude name="**/*.bak"/>
        <exclude name="**/bak/**"/>        
      </fileset>
    </copy>              

    <copy todir="${dist.dir}/templates">
      <fileset dir="${build.dir}/templates">
        <include name="**/*.vm"/>
        <exclude name="**/*.bak"/>
        <exclude name="**/bak/**"/>
      </fileset>
    </copy>  

    <copy todir="${dist.dir}/webapps/html">
      <fileset dir="${build.dir}/webapps/html">
        <include name="**/*"/>
        <exclude name="**/*.bak"/>        
        <exclude name="**/bak/**"/>
      </fileset>
    </copy>

    <copy todir="${dist.dir}/webapps/applet">
      <fileset dir="${build.dir}/webapps/applet">
        <include name="**/*"/>
        <exclude name="**/*.bak"/>        
        <exclude name="**/bak/**"/>
      </fileset>
    </copy>

    <copy todir="${dist.dir}/webapps/icons">
      <fileset dir="${build.dir}/webapps/icons">
        <include name="**/*.gif"/>        
        <include name="**/*.jpg"/>
        <exclude name="**/*.bak"/>
        <exclude name="**/bak/**"/>
      </fileset>
    </copy>
    
    <copy todir="${dist.dir}/webapps/images">
      <fileset dir="${build.dir}/webapps/images">
        <include name="**/*.gif"/>        
        <include name="**/*.jpg"/>
        <exclude name="**/*.bak"/>
        <exclude name="**/bak/**"/>
      </fileset>
    </copy>  

    <copy todir="${dist.dir}/webapps/WEB-INF/">
      <fileset dir="${build.dir}/webapps/WEB-INF/">
        <include name="**/*"/>
        <exclude name="classes/**"/>      
        <exclude name="conf/*"/>
        <exclude name="src/**"/>
      </fileset>
    </copy>  

    <jar jarfile="${dist.root}/${project}-${version}-war.jar">
      <fileset dir="${dist.dir}">
        <include  name="**/*"/>
      </fileset>
    </jar>   
  </target>

  <target name="conf">
     <delete>
        <fileset dir="${build.dir}/conf" includes="*"/>
        <fileset dir="${build.dir}/webapps/WEB-INF/conf" includes="*"/>
     </delete>
     <filter filtersfile="deploy.properties"/>
       <copy todir="${build.dir}/conf" filtering="true">
        <fileset dir="${build.dir}/conf/templates">
            <include name="*"/>
        </fileset>
       </copy>  
       <copy todir="${build.dir}/webapps/WEB-INF/conf" filtering="true">
        <fileset dir="${build.dir}/webapps/WEB-INF/conf/templates">
            <include name="*"/>
        </fileset>
       </copy>
  </target>  
</project>

分享到:
评论

相关推荐

    ANT安装与使用教程

    以下是ANT安装与使用教程,旨在帮助项目部署人员快速掌握ANT的安装和基本使用。 硬件环境 ANT的安装和使用需要一台开发PC机,推荐配置为Windows 7操作系统。 软件环境 ANT的安装和使用需要JDK的支持,因此需要先...

    ant安装文件+使用模板

    Ant是Apache软件基金会的一个开放源代码项目,它是一个基于Java的构建工具,主要用于自动化Java项目的构建、编译、测试和部署等任务。Ant以其简单易用、可扩展性强的特点,被广泛应用于各种Java开发环境中。 **一、...

    Ant的下载安装和简单地使用

    ### Ant的下载、安装与基本使用详解 #### 一、Ant简介 Apache Ant是一个开源的、跨平台的Java编译工具,它使用XML格式的构建文件(通常为`build.xml`)来描述项目的构建过程。Ant能够自动化执行一系列任务,如编译...

    .Ant安装编译操作手册

    ### Ant安装编译操作手册知识点解析 #### 一、引言 - **编写目的**:本文档旨在指导软件发布人员如何正确安装与配置Apache Ant,解决在安装与使用过程中可能遇到的问题,确保能够顺利地使用Ant对Flex/Java工程项目...

    ant工具下载和安装说明

    在本文中,我们将详细介绍如何下载和安装Ant。 **一、Ant的下载** 1. 访问官方网站:首先,你需要访问Apache Ant的官方网站,地址是`https://ant.apache.org/`。在网站上,你可以找到最新版本的Ant以及其他相关...

    Ant安装与配置

    ### Ant安装与配置详解 Ant(Apache Ant)是一款开源的Java构建工具,广泛应用于Java项目的自动化构建、编译、测试和部署等流程中。对于初次接触Web开发的新手来说,熟练掌握Ant的安装与配置是必不可少的一环。下面...

    ANT 的安装和配置

    ANT 的安装和配置 安装在windows下

    ant ant ant ant

    "Ant ant ant antant ant ant antant ant ant ant" 这个描述可能是在强调Ant在项目构建过程中的重复性和不可或缺性,暗示着它在工程中的频繁使用和核心地位。 Ant的设计理念是“一切都是XML”,它通过XML格式的构建...

    Mac安装Ant 到usr目录下不报错

    需要注意的是,如果不想将Ant安装在/usr/local目录下,而是选择在用户的个人目录,可以简化上述步骤,只需获取root权限,修改bashrc文件并添加环境变量。这样不会涉及到权限和软连接的问题。 总之,正确安装和配置...

    ant工具使用指南ant工具使用指南

    本指南将深入探讨Ant工具的使用,帮助开发者高效地管理项目构建。 一、Ant概述 Ant是一个开源的Java构建工具,其设计灵感来源于Unix的Make工具。它通过XML配置文件(通常名为build.xml)来定义任务和目标,使得构建...

    Ant参考教程,Ant使用指南,Ant全攻略

    "Ant十五大最佳实践.doc"则可能总结了经验丰富的开发者在使用Ant时总结的一些技巧和建议,比如合理组织构建文件,使用变量和属性来减少重复,保持构建文件的简洁性,以及利用Ant的条件和循环结构来优化构建过程。...

    Ant安装build手册—LINUX

    通过以上步骤,你可以在 Linux 环境中成功安装和配置 Ant,编写构建脚本,并管理构建过程。Ant 提供了一个灵活且强大的框架,允许开发者通过 XML 描述构建过程,极大地提高了项目构建的自动化程度和可维护性。在实际...

    ant使用指南及使用教程

    Ant是Java项目管理和自动化构建的重要工具,尤其在早期的Java EE应用开发中广泛使用。本文将深入探讨Ant的使用指南和教程,帮助你掌握其基本概念和实际操作。 1. Ant基本概念: - 构建文件:Ant的核心是构建文件,...

    ant安装搭建安装文档

    ### ant安装搭建安装文档 #### 一、简介 Apache Ant 是一个 Java 平台上的构建工具,主要用于自动化软件编译、测试、部署等任务。它使用 XML 来描述构建过程,支持跨平台运行(Windows、Linux等)。本文档将详细...

    glassfish和ant安装与配置

    ### GlassFish和Ant安装与配置 #### 一、概述 本文档主要介绍如何在Windows平台上安装和配置GlassFish服务器以及Ant构建工具,并在Eclipse IDE中进行相应的设置,以便能够顺利地开发、构建和部署Java Web应用程序...

    ant1.7使用手册指南

    5. **条件语句和选择器**:了解如何在Ant中使用条件任务,如`if`和`unless`,以及文件选择器,如`present`、`and`、`or`,来控制任务的执行条件。 6. **文件集(Filesets)和文件映射(Filemappers)**:学习如何...

Global site tag (gtag.js) - Google Analytics