Apache Ant的安装
介绍
Apache Ant是一个Java库和一个 命令行工具,可以用来构建Java应用。Ant提供了许多内置的任务(tasks),可以编译、组装、测试、运行Java应用。Ant也可以构建非Java应用,例如C、C++应用。
Ant非常灵活,没有强制Java项目必须满足什么编码规范、或者必须有什么样的目录布局。
Apache Ant官网
https://ant.apache.org/

Ant对Java版本的要求
当前, Ant维护了两条开发主线,一条是 1.9.x系列版本,运行时需要Java5及以后版本;另外一条是1.10.x系列版本,运行时需要Java8及以后版本。
当前1.9.x正是修改问题,1.10.x会新增特性,推荐采用1.10.x版本。
如果只有JRE,而不是一个完整的JDK,那么Ant的许多任务不能执行。
https://ant.apache.org/faq.html

Ant版本下载
如果是下载二进制发布包,打开页面:https://ant.apache.org/bindownload.cgi
例如,下载1.10.14版本的zip包,下载下来是apache-ant-1.10.14-bin.zip:

目录结构
将下载下来的压缩包解压到某个目录下,例如D盘,解压后的目录结构如下:

运行Ant,只有bin和lib子目录是必须的。
bin子目录下是启动脚本:

etc子目录包含xsl文件:

lib子目录下是Ant JAR文件和必须的依赖:


manual子目录下存放了手册,双击该目录下的index.html,显示文档内容:

设置环境变量
设置JAVA_HOME环境变量
设置JAVA_HOME环境变量指向JDK的安装路径,例如:


设置ANT_HOME环境变量
设置ANT_HOME环境变量指向Ant的安装路径,例如:


将bin子目录的路径增加到Path环境变量中
将${ANT_HOME}/bin (Unix) 或者 %ANT_HOME%\bin (Windows)增加到Path环境变量中,例如:

(可选)在Ant安装目录下运行命令ant -f fetch.xml -Ddest=system下载依赖库到本地
在ANT_HOME目录(就是Ant的安装目录)下面运行命令:
ant -f fetch.xml -Ddest=system
这个命令可以下载Ant可选任务需要的几乎所有依赖库到ANT_HOME/lib目录下面。如果不运行这个命令,许多的Ant依赖任务无法正确执行。
其中-Ddest后面各种取值的含义如下:
-Ddest=user user lib dir ${user.home}/.ant/lib (下载的jar包放到用户的home目录下面)-Ddest=system ant lib dir ${ant.home}/lib (下载的jar包放到Ant的lib目录下面。推荐用这个选项)-Ddest=optional optional dir $${basedir}/lib/optional (for Ant developers) (下载的jar包放到源代码的lib/optional目录下面,在构建Ant源代码的时候使用这种方式)
https://ant.apache.org/manual/index.html

fetch.xml文件在Ant安装目录下:

看看在执行这个命令前,lib目录下的文件数量:

执行命令ant -f fetch.xml -Ddest=system:

省略了中间很多的输出。。。
最后输出:

看看在执行这个命令后,lib目录下的文件数量,可以发现,增加了很多文件:

可选任务
Ant提供了很多可选任务。一个可选任务通常需要外部的库才能运行。可选任务和核心任务打包在一起。
每个可选任务需要的外部依赖库参见https://ant.apache.org/manual/index.html

这些依赖的外部库必须增加到 Ant’s classpath中,可以用下面的一种方式:
- 放在ANT_HOME/lib目录下面,这种方式增加的jar文件对Ant的所有用户和builds可见。
- 放在${user.home}/.ant/lib (从Ant 1.6支持),这种方式允许不同的用户增加新的库到Ant中。增加到该目录下的jar文件在命令行模式下的Ant可用。
- 在命令行下使用-lib参数。这种方式可以case-by-case增加jar文件。
- 在CLASSPATH 环境变量下。应该尽量避免这种方式。因为这种方式增加的jar文件对所有Java应用可见。
- 在被任务本身可接受的路径下面。
检查安装
到cmd窗口下,输入ant,然后回车,输出如下信息:

这表示ant安装成功了。之所以出现上面的信息,是因为必须为项目写一个build.xml文件才行。
查看ant的版本
到cmd窗口下,输入ant -version,可以查看ant的版本信息。例如:

使用ant -diagnostics自我诊断问题
Ant有一个内置的诊断功能。运行ant -diagnostics命令,ant会查看它的内部状态,并打印出来。将会检查并打印如下几方面的信息:
- ant从哪边运行的
- ant.jar和 包含可选任务的ant-*.jar的版本号
- ANT_HOME/lib目录下面有哪些JAR文件
- 哪些可选任务可用
- XML解析器的信息
- JVM系统属性
- temp 目录的状态
- 当前的时区
例如,一次执行ant -diagnostics命令打印的信息(有的信息比较多,只部分截屏):







相关文章:
Apache Ant的安装
介绍 Apache Ant是一个Java库和一个 命令行工具,可以用来构建Java应用。Ant提供了许多内置的任务(tasks),可以编译、组装、测试、运行Java应用。Ant也可以构建非Java应用,例如C、C应用。 Ant非常灵活,没有…...
考研:数学二例题--∞−∞和0⋅∞型极限
前言 本文只是例题,建议先参考具体如何做这类型例题。请到主文章中参考:https://blog.csdn.net/grd_java/article/details/132246630 ∞ − ∞ 和 0 ⋅ ∞ \infin - \infin 和 0\infin ∞−∞和0⋅∞ 例题 例1: lim x → ∞ x 2 x 2 −…...
C++算法:图中的最短环
题目 现有一个含 n 个顶点的 双向 图,每个顶点按从 0 到 n - 1 标记。图中的边由二维整数数组 edges 表示,其中 edges[i] [ui, vi] 表示顶点 ui 和 vi 之间存在一条边。每对顶点最多通过一条边连接,并且不存在与自身相连的顶点。 返回图中 …...
C++学习——类其实也是一种作用域
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 其实也是一种作用域,每个类都会定义它自己的作用域。在类的作用域之外,普通的成员只能通过对象(可以是对象本身,也可以是对象指针或对象…...
Seata入门系列【4】undo_log、global_table、branch_table、lock_table字段及作用详解
1 客户端 1.1 undo_log 在AT模式中,需要在参与全局事务的数据库中,添加一个undo_log表,建表语句如下: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for undo_log -- --…...
虚幻引擎:数据表格的C++常用API
1.将数据表格中的所有数据存到一个数组中 //参数1 // 错误提示 //参数2 // 存储的数组 TArray<FKeyInfoHeader*> array; KeyInfoDT->GetAllRows<FKeyInfoHeader>(TEXT("错误"),array); 2.获取表格中所有的行名称 TArray<FName>array; …...
Java日期格式化(DateFormat类和SimpleDateFormat类)
格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式。例如将日期“Fri May 18 15:46:24 CST2016” 格式转换为 “2016-5-18 15:46:24 星期五”的格式。 在 java 中,可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期,下面详细介绍这两…...
centos 7 lamp owncloud
OwnCloud是一款开源的云存储软件,基于PHP的自建网盘。基本上是私人使用,没有用户注册功能,但是有用户添加功能,你可以无限制地添加用户,OwnCloud支持多个平台(windows,MAC,Android&a…...
屏幕亮度调节保护您的眼睛
官方下载地址: 安果移动 视频演示:屏幕亮度调节-保护您的眼睛_哔哩哔哩_bilibili 嗨,亲爱的用户,你是否有过这样的体验:夜晚安静的时刻,想要在抖音上看看热门的舞蹈、在快手上发现生活的 趣味、或是在哔…...
CentOS Linux下CMake二进制文件安装并使用Visual Studio调试
cmake安装——二进制安装(很简单,推荐!!) 1)下载二进制包。首先就是官网下载二进制安装包(我们是64位系统,就下载对应的包),这里。 例如:在/home/DOWNLOAD目录下执行,即下载二进制…...
ASP.net相关目录,相关配置文件和.后缀名解释
App_Data:用于存储应用程序的数据文件,例如数据库文件或其他本地文件。 App_Start:包含应用程序的启动配置文件,例如路由配置、日志配置等。 Content:存放应用程序的静态资源文件,如 CSS、JavaScript、图…...
一键批量转换,轻松将TS视频转为MP4视频,实现更广泛的播放和分享!
在享受精彩视频内容的同时,有时我们可能会面临一个问题:某些视频格式可能不太适合我们的播放设备或分享平台。特别是TS格式的视频,在一些情况下可能无法直接播放或上传。但是不用担心,因为我们为您提供了一款强大的视频剪辑工具&a…...
【Redis】使用Java客户端操作Redis
目录 引入jedis依赖连接Redis命令get/setexists/delkeysexpire/ttltype 引入jedis依赖 连接Redis 命令 get/set exists/del keys expire/ttl type...
BSPHP 未授权访问 信息泄露
漏洞描述 BSPHP 存在未授权访问 泄露用户 IP 和 账户名信息 漏洞复现 访问url: 构造payload访问: /admin/index.php?madmin&clog&atable_json&jsonget&soso_ok1&tuser_login_log&page1&limit10&bsphptime16004073…...
Learning Sample Relationship for Exposure Correction 论文阅读笔记
这是中科大发表在CVPR2023的一篇论文,提出了一个module和一个损失项,能够提高现有exposure correction网络的性能。这已经是最近第三次看到这种论文了,前两篇分别是CVPR2022的ENC(和这篇文章是同一个一作作者)和CVPR20…...
Vue项目 -- 解决Eslint导致的console报错问题
在利用vue-cli3构建的项目中引入eslint进行语法检查时,使用console.log(‘xxx’)时,控制台抛出了Unexpected console statement (no-console) 异常, 例:一使用console就提示报错 解决办法是: 在 .eslintrc.js 文件中…...
uni-app 在已有的数据对象中动态添加更多的数据对象
原数据对象 flowData: {list: [], // 数据值column: 2, // 瀑布列数columnSpace: 2 // 瀑布列宽间距 } 动态添加后的数据对象 flowData: {list: [], // 数据值column: 2, // 瀑布列数columnSpace: 2, // 瀑布列宽间距column_1: [],column_2: [] } 动态添加更多的数据对象的…...
【LeetCode】17. 电话号码的字母组合
1 问题 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits “23” 输出&…...
使用 Apache Kafka 进行发布-订阅通信中的微服务
发布-订阅消息系统在任何企业架构中都发挥着重要作用,因为它可以实现可靠的集成,而无需紧密耦合应用程序。在解耦的系统之间共享数据的能力并不是一个容易解决的问题。 考虑一家拥有多个使用不同语言和平台独立构建的应用程序的企业。它需要响应地共享数…...
valarray 包含对象成员的类(cpp14章)
C代码重用 1.公有继承可以实现 2.包含、私有继承、保护继承用于实现has-a关系,即新的类将包含另一个类的对象。 (使用这样类成员:本身是另外一个类对象称为包含 (组合或层次化)。) 3.函数模板、类模…...
回溯算法:暴力枚举最优解
一、上期回顾 吃透二分查找三大模板:基础查找、左边界、右边界,掌握二分答案解题思维,有序数组最优解法全部拿下。今天正式攻克回溯算法,暴力枚举最优写法,解决排列、组合、子集、棋盘类所有搜索题。二、递归与回溯核心…...
Taotoken Token Plan套餐为高频用户带来的长期成本优势感知
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken Token Plan套餐为高频用户带来的长期成本优势感知 对于高频使用大模型API的开发者或团队而言,项目开发中的模…...
别再搞混了!Docker export和save到底啥区别?用busybox实战带你分清
深入解析Docker镜像与容器快照:从busybox实战看export与save的本质差异 在Docker的日常使用中,许多开发者经常对docker export和docker save这两个命令感到困惑。它们都能生成.tar文件,看似功能相似,实则针对完全不同的场景和对象…...
在Windows上安装安卓应用的终极指南:告别模拟器,享受原生体验
在Windows上安装安卓应用的终极指南:告别模拟器,享受原生体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾梦想在Windows电脑上直接…...
从零构建μC/OS-II硬件抽象层:以ARM7 LPC2292为例详解移植核心
1. 项目概述与核心思路十年前,我第一次把μC/OS-II从一个ARM7开发板搬到另一个不同型号的ARM7芯片上,光是改启动文件和中断向量表就折腾了一周。那时候我就想,要是有一套标准化的“中间层”,能把芯片底层的差异给屏蔽掉࿰…...
Go语言微服务架构设计:从理论到实践
Go语言微服务架构设计:从理论到实践 引言 微服务架构已经成为现代软件架构的主流模式。Go语言凭借其高性能、轻量级和并发能力,成为构建微服务的理想选择。本文将深入探讨微服务架构的核心概念、Go语言实现策略,以及如何构建可扩展、高可用的…...
Linux服务器文件传输服务搭建:从FTP协议到vsftpd实战部署
1. 项目概述:为什么要在Linux上搭建FTP服务器?很多刚接触Linux的朋友,尤其是从Windows转过来的,一提到搭建服务器,特别是像FTP这种“古老”但依然实用的文件传输服务,第一反应可能就是“头大”。在Windows上…...
基于STM32F401与TM8211的I2S音频播放系统:从WAV解析到硬件驱动全解析
1. 硬件选型与系统架构设计 第一次接触音频项目时,我被各种专业术语搞得晕头转向。后来发现,用"音乐快递员"的比喻就能轻松理解整个系统:STM32F401是快递分拣中心,I2S是运送音乐包裹的高速公路,TM8211则是把…...
在VSCode中重塑R语言开发体验:vscode-R插件深度解析
在VSCode中重塑R语言开发体验:vscode-R插件深度解析 【免费下载链接】vscode-R R Extension for Visual Studio Code 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-R 你是否曾为R语言开发环境的局限性感到困扰?传统IDE虽然功能齐全&#…...
Cursor Free VIP:三步破解AI编程助手试用限制的专业解决方案
Cursor Free VIP:三步破解AI编程助手试用限制的专业解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached yo…...
