/ 中存储网

Apache服务器环境安装配置ant

2014-02-14 13:10:01 来源:ITJS.CN

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

[[email protected] home]$ su - admin

[[email protected] 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命令测试运行情况

[[email protected] home]$ ant 

Buildfile: build.xml does not exist!

Build failed

[[email protected] 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          = [email protected]

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>