Ant学习--简单实例入门

步骤1、创建工程文件夹名字

F:\Helloworld

步骤2、编写java代码;

package com.netease;

public class Ant_test {
	
	public static  void  main(String []args){
		System.out.println("测试ant用法!!!");
		System.out.println("测试ant用法!!!");
		
		Antbean bean = new Antbean();
		bean.print();
	}

}
package com.netease;

public class Antbean {
	
	public void print(){
		System.out.println("Ant_test类调用了我,我的名字叫做Antbean");
		System.out.println("Ant_test类调用了我,我的名字叫做Antbean");
		System.out.println("Ant_test类调用了我,我的名字叫做Antbean");
	}
}

步骤3、在F:\Helloworld创建src/com/netease/目录,将编写的java类文件放在此处

步骤4、编写build.xml文件,放在和src的同级目录,即项目根目录下。

<?xml version="1.0"  encoding="UTF-8"?>
<project name="HelloWorld"  default="run"  basedir=".">
  <property name="src"   value="src"/>
  <property name="dest"   value="classes"/>
  <property name="hello_jar"  value="hello.jar"/>
  
  <target name="init">
    <mkdir dir="${dest}"/>
  </target>
  
  
  <target name="compile"  depends="init">
    <javac srcdir="${src}"  destdir="${dest}" includeantruntime="on"/>
  </target>
  
  
  <target name="build"  depends="compile">
    <jar jarfile="${hello_jar}"   basedir="${dest}"/>
  </target>
  
  <target name="run"    depends="build">
     <java classname="com.netease.Ant_test"    classpath="${hello_jar}"/>
  </target>
    
  <target name="clean">
    <delete dir="${dest}"/>
	<delete file="${hello_jar}"/>
  </target>
  
  <target name="return"  depends="clean,run">
    <ant target="clean"/>
	<ant target="run"/>
  </target>
  
</project>
	
	
   
  
  
  

步骤5、进入cmd控制台运行ant命令

(1)一次执行:输入ant,配置的默认执行run任务。

由于依赖关系,依次执行以下任务:init(初始化,如创建目录)、compile(编译java文件为class字节码文件)、build(创建jar包)、run(运行程序);

(2)分步执行:ant init、ant compile、ant build、ant run



附加规范目录结构、简单目录结构:

<?xml version="1.0"  encoding="UTF-8"?>
<project name="HelloWorld"  default="run"  basedir=".">
  <property name="src"   value="src"/>
  <property name="dest"   value="build/classes"/>
  <property name="lib"  value="lib"/>
  <property name="hello_jar"  value="hello.jar"/>
  
  <target name="init">
    <mkdir dir="${dest}"/>
  </target>
  
  
  <target name="compile"  depends="init">
    <javac srcdir="${src}"  destdir="${dest}" includeantruntime="on"/>
  </target>
  
  
  <target name="build"  depends="compile">
    <jar jarfile="${hello_jar}"   basedir="${dest}"/>
	<mkdir dir="${lib}"/>
	<jar jarfile="${lib}/${hello_jar}" basedir="${dest}"></jar>
  </target>
  
  <target name="run"    depends="build">
     <java classname="com.netease.Ant_test"    classpath="${hello_jar}"/>
	 <java classname="com.netease.Ant_test"   classpath="${lib}/${hello_jar}"/>
  </target>
    
  <target name="clean">
    <delete dir="${dest}"/>
	<delete file="${hello_jar}"/>
	<delete file="${lib}/${hello_jar}"/>
  </target>
  
  <target name="return"  depends="clean,run">
    <ant target="clean"/>
	<ant target="run"/>
  </target>
  
</project>
  


总结Ant(下面引用的例子没有设置property变量引用)

一、  Ant的常用任务

Ant工具中每一个任务封装了具体要执行的功能,是Ant工具的基本执行单位。在本小节中,主要引导读者来看下Ant的常用任务及其使用举例。

1.       copy任务

该任务主要用来对文件和目录的复制功能。举例如下:

Eg1.复制单个文件:<copy file="file.txt" tofile="copy.txt"/>

Eg2.对文件目录进行复制:

   <copy todir="../newdir/dest_dir">

            <fileset dir="src_dir"/>

 </copy>

Eg3. 将文件复制到另外的目录:

 <copy file="file.txt" todir="../other/dir"/>

2.       delete任务

对文件或目录进行删除,举例如下:

Eg1. 删除某个文件:<delete file="photo/amigo.jpg"/>

Eg2. 删除某个目录:<delete dir="photo"/>

Eg3. 删除所有的备份目录或空目录:

        <delete includeEmptyDirs="true">

               <fileset dir="." includes="**/*.bak"/>

        </delete>

3.       mkdir任务

创建目录。eg<mkdir dir="build"/>

4.       move任务

移动文件或目录,举例如下:

Eg1. 移动单个文件:<move file="fromfile" tofile=”tofile”/>

Eg2. 移动单个文件到另一个目录:<move file="fromfile" todir=”movedir”/>

Eg3. 移动某个目录到另一个目录:

        <move todir="newdir">

               <fileset dir="olddir"/>

        </move>

5.       echo任务

该任务的作用是根据日志或监控器的级别输出信息。它包括messagefileappendlevel四个属性,举例如下:

<echo message="Hello,Amigo" file="logs/system.log" append="true">

6、javac 编译任务

7、java运行java程序任务

8、jar打包任务


二、利用Ant构建和部署Java工程

Ant可以代替使用javacjavajar等命令来执行java操作,从而达到轻松的构建和部署Java工程的目的。下面来看几个知识点。

1.     利用Antjavac任务来编译java程序

Antjavac任务用于实现编译Java程序的功能。下面来看一个简单的例子:

首先我们建立名为antstudyJava工程,建立src目录为源代码目录,在src目录下建立HelloWorld.java这个类文件。该类文件的内容如下:

public class HelloWorld {
    
public static void main(String[] args) {
       System.out.println("Hello,Amigo");
    }
}

   同时在antstudy工程的根目录下建立build.xml文件,在该文件中编译src目录下的java文件,并将编译后的class文件放入build/classes目录中,在编译前,需清除classes目录,该文件的内容如下:

<?xml version="1.0"?>
<project name="javacTest"default="compile" basedir=".">
    
<target name="clean">
       
<delete dir="build"/>
    
</target>

    
<target name="compile" depends="clean">
       
<mkdir dir="build/classes"/>
    
<javac srcdir="src" destdir="build/classes"/>
    
</target>
</project>

    运行该build.xml文件,可在工程中看到新增了build/classes目录,并在该目录中生成了编译后的HelloWorld.class文件。

2.     使用Antjava任务运行Java程序

Ant中可以使用java任务实现运行Java程序的功能。下面在1的例子中进行如下的修改,修改后的build.xml文件的内容如下:

<?xml version="1.0"?>
<project name="javaTest" default="jar" basedir=".">
    
<target name="clean">
       
<delete dir="build"/>
    
</target>

    
<target name="compile" depends="clean">
       
<mkdir dir="build/classes"/>
      
<javac srcdir="src" destdir="build/classes"/>
    
</target>

    
<target name="run" depends="compile">
       
<java classname="HelloWorld">
           
<classpath>
              
<pathelement path="build/classes"/>
           
</classpath>
       
</java>
    
</target>
</project>

    运行该build.xml文件,可在控制台看到HelloWorldmain方法的输出。

3.     使用Antjar任务生成jar文件

读者可以在上例的基础上更进一步,来生成jar包,可在run这个target下再加上如下target

<target name="jar" depends="run">
<jar destfile="helloworld.jar" basedir="build/classes">
           
<manifest>
              
<attribute name="Main-class" value="HelloWorld"/>
           
</manifest>
       
</jar>
</target>

此时将antprojectdefault属性设置为jar,同时运行该build.xml文件,运行完毕后,可看到在工程目录下生成了一个jarHelloWorld.jar

4.       使用Antwar任务打包J2EE Web项目

建立一个J2EE Web工程,其目录结构如下图所示:

其中src为源代码目录,WebRoot为各jsp存放目录,lib为工程的包目录。在antwebproject工程目录下建立了build.xml文件,该文件为该工程的Ant构件文件。读者可以src目录下放入在前续例子中开发的HelloWorld.java文件,并在WebRoot下建立index.jsp文件,其内容很简单,就是输出Hello信息,代码如下所示:

<%@ page language="java" contentType="text/html; charset="UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    
<head>
       
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
       
<title>ant打包测试</title>
    
</head>
    
<body>
       Hello,Ant
    
</body>
</html>

   接下来编写build.xml文件,其内容如下:

<?xml version="1.0"?>
<project name="antwebproject"  default="war"basedir=".">
 
<property name="classes" value="build/classes"/>
    
<property name="build"value="build"/>
    
<property name="lib"value="WebRoot/WEB-INF/lib"/>
    
<!-- 删除build路径-->
    
<target name="clean">
       
<delete dir="build"/>
    
</target>

    
<!-- 建立build/classes路径,并编译class文件到build/classes路径下-->
    
<target name="compile" depends="clean">
       
<mkdir dir="${classes}"/>

       
<javac srcdir="src" destdir="${classes}"/>
    
</target>

    
<!-- 打war包-->
    
<target name="war" depends="compile">
<war destfile="${build}/antwebproject.war" webxml="WebRoot/WEB-INF/web.xml">
           
<!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹-->
    
<fileset dir="WebRoot" includes="**/*.jsp"/>

           
<!-- 拷贝lib目录下的jar包-->
           
<lib dir="${lib}"/>
           
<!-- 拷贝build/classes下的class文件-->
           
<classesdir="${classes}"/>
       
</war>
    
</target>
</project>

    target的作用在内容中已经进行说明,在此不再赘述。运行该build文件,更新目录后,可看到在build目录下生成了antwebproject.war文件,解开后可看到其目录结构如下:

--META-INF

     --MANIFEST.MF

--index.jsp

--WEB-INF

     --lib

            --log4j-1.2.9.jar

     --classes

            --HelloWorld.class

     --web.xml

     读者可以将该war包拷贝到Tomcat的目录下看一下运行结果。








posted @ 2014-11-05 11:03  飞扬的薰衣草  阅读(261)  评论(0编辑  收藏  举报