zoukankan      html  css  js  c++  java
  • Java基础系列之三:Apache Ant入门示例

     “Apache Ant是一个基于Java 的生成工具。据最初的创始人James Duncan Davidson 介绍,这个工具的名称是 another neat tool(另一个整洁的工具)的首字母缩写。

    在初步使用过程中,对于Ant的作用,我觉得主要即辅助Java的编译,例如定义编译之前的准备工作、项目之间的依赖关系等等。≈.NET中的项目文件(.csproj)。

    1.下载Ant,(http://ant.apache.org/bindownload.cgi

    2.安装Ant

    将下载的包apache-ant-1.8.0-bin.zip解压,放在适当的位置,如本例放置于:C:\apache-ant-1.8.0

    为方便使用,还需设置OS环境变量,进入computer/properties/environment variables/user variables

    添加一个用户变量: ANT_HOME=C:\apache-ant-1.8.0

    修改用户变量 PATH,添加 %ANT_HOME%\bin

    3.测试Ant安装

    打开命令行,输入ant,如果能见到类似如下信息,证明Ant配置成功:

    Buildfile: build.xml does not exist!

    Build failed

    4.新建测试项目

    Eclipse中新建项目“HelloAntWorld”,代码如下:

    代码
    package example;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class HelloWorld {
        
    private static String ORACLEUSERNAME;
        
    private static String ORACLEPASSWORD;
        
    private static String ORACLEURL;
        
    private static String ORACLEDRIVER;
     
        
    public static void main(String[] args) throws SQLException {
            ORACLEUSERNAME 
    = "emh";
            ORACLEPASSWORD 
    = "emh";
            ORACLEURL 
    = "jdbc:oracle:thin:@147.128.20.66:1521:ems";
            ORACLEDRIVER 
    = "oracle.jdbc.driver.OracleDriver";
            
    //
            jdbc2Oracle();
        }
     
        
    private static Connection getConn(String pUser, String pPwd, String pUrl, String pDriver) throws Exception {
            Class.forName(pDriver);
            
    return DriverManager.getConnection(pUrl, pUser, pPwd);
        }
     
        
    private static void jdbc2Oracle() {
            Connection conn 
    = null;
            Statement stmt 
    = null;
            ResultSet rs 
    = null;
            
    //
            try {
                conn 
    = getConn(ORACLEUSERNAME, ORACLEPASSWORD, ORACLEURL, ORACLEDRIVER);
                stmt 
    = conn.createStatement();
                rs 
    = stmt.executeQuery("select table_name from user_tables where rownum<10");
                
    //
                while (rs.next()) {
                    String t 
    = rs.getString(1);
                    System.out.println(t);
                }
            } 
    catch (Exception e) {
                e.printStackTrace();
            } 
    finally {
                
    try {
                    rs.close();
                    stmt.close();
                    conn.close();
                } 
    catch (Exception e) {
                }
            }
        }
     
    }

      

    在根目录添加Antbuild.xml文件,内容如下:

     

    代码
    <?xml version="1.0"?>
    <project name="main" default="all" basedir=".">
       
    <target name="all" depends="init,compile,jar" >
       
    </target>
     
       
    <target name="init">
           
    <property name="dirs.base" value="${basedir}"/>
           
    <property name="classdir" value="${dirs.base}/classes"/>
           
    <property name="src" value="${dirs.base}/src"/>
           
    <property name="lib" value="${dirs.base}/lib"/>
           
    <property name="outputjar" value="${dirs.base}/lib/HelloAntWorld.jar"/>
           
    <property name="classpath" value="${dirs.base}/lib/ojdbc6.jar"/>
           
    <mkdir dir="${classdir}"/>
           
    <mkdir dir="${lib}"/>
       
    </target>
     
       
    <target name="jar" depends="init">
           
    <jar jarfile="${outputjar}" manifest="${basedir}/HelloAntWorld.mf">
                  
    <fileset dir="${classdir}" />
           
    </jar>
       
    </target>
     
       
    <target name="compile" depends="init">
           
    <javac debug="true" srcdir="${src}"
              destdir
    ="${classdir}" />
       
    </target>
     
       
    <target name="clean" depends="init">
           
    <delete dir="${classdir}"/>
       
    </target>
    </project>

      

    学习build.xml的文件最简单的方法是照猫画虎,从其它的项目中拿到build.xml,然后根据自己的需要增加或者简化。对build.xml来说,最核心的是定义任务即target,这里定义的每个target,将来可以在命令行调用Ant时使用,如“Ant clean”即执行上面定义的“clean”,实际即删除classes目录下的所有文件,以此类推。

    5.使用Ant编译Java项目

    EclipseAnt集成很好,真正开发时也可以借由Eclipse来调用Ant进行项目编译,只要做相应的设置即可。这里仍以命令行为例:

    C:\DEV\HelloAntWorld>ant all

    以下为命令输出。可以看到调用的是build.xml中定义的target all”,由于它的依赖(depends)中包括“init,compile,jar”,所以在命令输出中这三个依赖项依次执行完,最后执行“all”:

    Buildfile: C:\DEV\HelloAntWorld\build.xml 

    init: 

    compile:

        [javac] C:\DEV\HelloAntWorld\build.xml:24: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable buil

    ds

        [javac] Compiling 1 source file to C:\DEV\HelloAntWorld\classes 

    jar:

          [jar] Building jar: C:\DEV\HelloAntWorld\lib\HelloAntWorld.jar 

    all: 

    BUILD SUCCESSFUL

    Total time: 1 second

    C:\DEV\HelloAntWorld>cd lib

    C:\DEV\HelloAntWorld\lib>java -jar HelloAntWorld.jar

    6.其它

    有时候我们会从其它地方拷贝Java项目,如果这些项目未使用Ant,那么我们常常要新建项目然后导入,然后才能使用。如果使用了Ant,我们可以在Eclipse中选择File/New/Project../Java/Java project from existing Ant buildfile,然后选择相应的build.xml文件即可导入项目(有点像在.NET中使用项目文件.csproj,只不过.NET中更加简单)。

    多提一句,实际由build.xml自动导入项目是依赖于build.xml中“javac”项中的“srcdir”,所以如果build.xml中没有任何target中包含“javac”项目(当然绝大多数情况下肯定会有),而你选择由build.xml导入项目,则会报错。

    这是一个入门简例,关于Ant更加详细的内容,参见文件:Apache Ant Go Through.pdf

  • 相关阅读:
    Js Array 删除
    语音播报功能
    js实现HashTable
    Js 克隆
    获取电脑名和IP地址
    获取电脑名和Ip
    IIS 配置问题
    WCF 服务
    【并查集】wikioi1001舒适的路线
    【实用】读取信息
  • 原文地址:https://www.cnblogs.com/morvenhuang/p/1724048.html
Copyright © 2011-2022 走看看