首页 > 其他分享 >Apache Ant入门示例

Apache Ant入门示例

时间:2023-09-07 10:32:27浏览次数:46  
标签:xml ant String 示例 Ant static build 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) {
            }
        }
    }
 
}

在根目录添加Ant的build.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项目

Eclipse对Ant集成很好,真正开发时也可以借由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

 

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

标签:xml,ant,String,示例,Ant,static,build,Apache
From: https://blog.51cto.com/u_2544485/7394864

相关文章

  • 关于antd Input 的defaultValue无法重新渲染的问题
    最近在开发一个功能,table里面的Input组件。需要单行能够编辑,又要多行一起编辑,如下。  在这种情况下,就只能对Input组件使用value受控,而不能使用defaultValue受控。因为defaultValue受控在批量编辑的时候无效。现在遇到的问题是,使用value受控,在onChange的时候输入框会有非常......
  • 示例-工作清单
    W0G2X0W2IM-eyJsaWNlbnNlSWQiOiJXMEcyWDBXMklNIiwibGljZW5zZWVOYW1lIjoiVU5JVkVSU0lUQVMgSVNMQU0gTkVHRVJJIFNVTkFOIEtBTElKQUdBIiwiYXNzaWduZWVOYW1lIjoiY29kZSBtYW5vbmciLCJhc3NpZ25lZUVtYWlsIjoiMjQxNjc0NjA1QHFxLmNvbSIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25h......
  • py 导入json到redis的代码示例
    这里是一个py导入json到redis的代码示例,它会将字典、列表和元组类型的值序列化为JSON字符串。在这个修改后的脚本中,使用`json.dumps()`函数对这些数据类型进行序列化处理。```pythonimportjsonimportredis#替换为您的JSON文件路径及Redis服务器连接参数json_file_pa......
  • Xanthomonas
    黄单胞菌属(学名:Xanthomonas)为溶杆菌目溶杆菌科的一属好氧或兼性厌氧发酵型革兰氏阴性杆菌。直杆菌。为植物致病菌(嗜麦芽糖黄单胞菌除外,该菌是人类条件致病菌)。此属的模式种为(Xanthomonascampestris)。1、NEWBing的回答根据我搜索的结果,根际微生物群落中的Xanthomonas对......
  • 用户案例 | 蜀海供应链基于 Apache DolphinScheduler 的数据表血缘探索与跨大版本升级
    导读蜀海供应链是集销售、研发、采购、生产、品保、仓储、运输、信息、金融为一体的餐饮供应链服务企业。2021年初,蜀海信息技术中心大数据技术研发团队开始测试用DolphinScheduler作为数据中台和各业务产品项目的任务调度系统工具。本文主要分享了蜀海供应链在海豚早期旧版本实......
  • 简读||Dynamic Metasurface Antennas for Uplink Massive MIMO Systems
    用于上行链路大规模MIMO系统的动态超表面天线摘要:大规模多输入多输出(MIMO)通信是近年来人们广泛关注的焦点。虽然大规模MIMO的理论增益已经确立,但在实践中实现具有大规模天线阵列的MIMO系统仍具有挑战性。与大规模MIMO系统相关的实际挑战包括成本、功耗和物理尺寸的增加。......
  • Apache IoTDB开发系统整合之Hive TsFile
    TsFile-Hive-Connector用户指南关于TsFile-Hive-ConnectorTsFile-Hive-Connector实现了Hive对Tsfile类型的外部数据源的支持。这使用户能够按Hive操作Tsfile。使用此连接器,您可以将单个TsFile从本地文件系统或hdfs加载到hive中将特定目录中的所有文件(从本地文件系统或......
  • Antonio_ice_room
    |工程概论|<班级链接>||-----------------|---------------||作业要求|<作业要求链接>||这个作业的目标|养成记录学习过程习惯|自我介绍:普普通通的大学生,没有什么特别的爱好,求学生涯至今毫无波澜,希望未来能有一些起色值得一提的事情:后悔没有在大一的时候就加......
  • 你好世界示例
    你好世界示例下面嵌入的基本上是您可以创建的最简单的Express应用程序。它是一个单一的文件应用程序- 不是你使用Express生成器时得到的,它为一个完整的应用程序创建脚手架,其中包含大量JavaScript文件,Jade模板和用于各种目的的子目录。constexpress=require('express'......
  • 43、Flink之Hive 读写及详细验证示例
    Flink系列文章[1、Flink部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接][13、Flink的tableapi与sql的基本概念、通用api介绍及入门示例][14、Flink的tableapi与sql之数据类型:内置数据类型以及它们的属性][15、Flink的t......