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.函数模板、类模…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...