上次讲了ant的安装和配制,这一节主要来看一个例子来体验一下ant的魅力。
在开始例子之前,首先来看一下ant安装包目录结构
ant
+--- README, LICENSE, fetch.xml, 其它文件. //一些提供基本信息的文件
+--- bin //这个目录下包含了一些启动ant的bat、shell等脚本
|
+--- lib // 包含ant 及其依赖的jar
|
+--- docs // 一些文档放在这个目录下
| |
| +--- images // 文档里面的一些图片
| |
| +--- manual // ant文档
|
+--- etc // 包含有各种作用的xsl文件:
// - 创建一个各种任务输出到xml的加强报告
// - 迁移您的构建文件和摆脱“过时”的警告
// - ... 其它作用 ;-)
这一个本来应该放在第一节的。这里补充一下:)
开始我们的例子。
设想好构架
首先在上面的ant目录下新建一个test文件夹,以保存我们的例子,(当然你也可以在其它地方,这个依个人习惯)。
在test目录下有这样一个目录结构。
test
+---src
|
+---com
|
+---sample
|
+---Project.java
Project.java代码如下:
//这里的代码可以随意,不写都没关系
public class Project
{
public static void main(String args[])
{
System.out.println("test!");
}
}
这个目录很像eclipse里面看到的项目结构,test就一个项目,要的就是这种效果:)
那我们如果用ant对这个项目进行编译、执行、打包呢?
首先我们要做的事是想好要把编译和打包后的class、jar文件放在哪里,我这里打算把编译的class文件夹放在test/build/classes文件夹下,把打包后的jar文件放在test/build/libs下。这里并不是真的要自己去建build、classes、libs文件夹,我会让ant自己去建些文件夹。
编写ant配制文件
下面将开始最关键的步骤,编写ant的build.xml文件。ant要做的事都写在这个文件里面,我把它放在test目录下。build.xml文件如下:
<?xml version="1.0" encoding="GB2312" ?>
<project name="main" default="complie" basedir=".">
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="build.lib" value="${build.dir}/lib"/>
<property name="build.classes" value="${build.dir}/classes"/>
<!-- build directories -->
<target name="prepare">
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.lib}"/>
<mkdir dir="${build.classes}"/>
</target>
<!--javac code-->
<target name="complie" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.classes}" includeantruntime="on"/>
</target>
<!--java code-->
<target name="run" depends="complie">
<java classname="Project" classpath="${build.classes}"/>
</target>
<!-- jar code -->
<target name="jar" depends="complie">
<jar jarfile="${build.lib}/Project.jar"
basedir="${build.classes}" >
<manifest>
<attribute name="Main-class" value="Project"/>
</manifest>
</jar>
</target>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
</project>
对上面build.xml进行分析
<?xml version="1.0" encoding="GBK2312" ?>
这一句xml文件基本都有,需要注意的是encoding="GB2312" 这一句,如果不写或写成encoding="UTF-8",文件中有中文时会报错.
<project name="test" default="complie" basedir=".">
</project>
ant的所有内容必须包含在这个里边,name是你给它取的名字(任意写),basedir故名思意就是工作的根目录 .代表当前目录。default代表默认要做的任务。
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="build.lib" value="${build.dir}/lib"/>
<property name="build.classes" value="${build.dir}/classes"/>
这一堆是类似定义了java里面的变量(name是变量名,value是值),${XXX} 就是取上面定义的值。
<!-- build directories -->
<target name="prepare">
<mkdir dir="${build.dir}"/> //建build文件夹
<mkdir dir="${build.lib}"/> //建lib文件夹
<mkdir dir="${build.classes}"/> //建classes文件夹
</target>
这一陀是说定义了一个任务,名叫prepare。每个任务写成一个target,<mkdir>什么的就是建了一堆文件夹
<!--javac code-->
<target name="complie" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.classes}" includeantruntime="on"/>
</target>
这里建了一个叫complie的任务,depends就是它所依赖要做的任务。比如ant执行到<target name="complie" depends="prepare">这里的时候,它发现有一个依赖,就会去判断prepare这个任务有没有被执行过,如果执行过了就直接执行complie这个任务,如果没有就执行prepare这个任务。
<javac srcdir="${src.dir}" destdir="${build.classes}" includeantruntime="on"/> 这句就是编译,javac命令应该都熟悉,srcdir是指定要编译的文件夹,destdir是指定编译后的class文件放置的文件夹。
<!--java code-->
<target name="run" depends="complie">
<java classname="Project" classpath="${build.classes}"/>
</target>
这里是运行java代码。要先做这个任务,就要先做complie。classname指定class文件,classpath指定class文件的位置。
<!-- jar code -->
<target name="jar" depends="complie">
<jar jarfile="${build.lib}/Project.jar"
basedir="${build.classes}">
<manifest>
<attribute name="Main-class" value="Project"/>
</manifest>
</jar>
</target>
打包成jar文件。jarfile指定要生成的jar(带路径),basedir指定要打包的class文件。
<manifest>
<attribute name="Main-class" value="Project"/>
</manifest>
这个是在生成的jar文件里面的MANIFEST.MF文件里面加入”Main-class: Project“这样一句话。如果不加,你打包的jar文件,在命令行运行 java -jar Project.jar 会报错。
<target name="clean">
<delete dir="${build.dir}"/>
</target>
这个就是把build文件夹删除。如果运行这个任务的话,以前构建的东东就会被删除掉,可以重新构建。可以在prepare加了这个作为依赖。
运行
开始-->运行-->cmd进入命令行-->进入test目录
输入ant,就会默认运行complie任务,你也可以输入ant compile 、ant clean、ant run、ant jar 单独一个。
结果
假设你输入了ant jar,我们来看一下,现在的test文件夹下是怎么样子的。
test
+---src
| |
| +---com
| |
| +---sample
| |
| +---Project.java
|---build
| |
| +---classes
| | |
| | +---Project.class
| +---libs
| |
| +---Project.jar
|---build.xml
分享到:
相关推荐
Vue 3.2 -- 使用vue3+ant-design-vue+vite+ts开发的通用中后台框架,实现了权限系统、动态菜单、国际化、mock数据、表格集成快速使用等功能,简洁干净开箱即用。. 各领域数据集,工具源码,适合毕业设计、课程设计...
vue快速学习03、ant-design 学习专用内容。
快速开发:SpringBoot通过自动配置和约定大于配置的原则,大大简化了项目设置和开发过程。 易于扩展:SpringBoot与生俱来的灵活性使您可以轻松集成各种服务和数据库,以满足您日益增长的需求。 安全性:内置的安全...
建议在开发之前快速浏览 ,学习基本的框架知识。 也可以快速浏览一下 的特性,看看与java有什么不同. 这里有一篇,可以帮助大家快速学习. 前序准备 你的本地环境需要安装 ,根据系统版本选择版本下载即可,无需配置...
ant模板学习使用,ant构建项目,初学者快速入门
AntDesign快速开发手册,满足基于React开发web前端应用
十分有用的ant资料,由此可以快速入门.
完整的编写ant的案例。细致的分析ant关键字的意义,可以帮你快速入门。
不坑,很不错的资源,齐全的matlab与机器学习算法:03BP神经网络、04RBF、GRNN和PNN神经网络、05 竞争神经网络与SOM神经网络、08 决策树与随机森林、09 遗传算法(Genetic Algorithm, GA)、10 粒子群优化(Particle...
ant中文教程,文本文档,快速学习ANT基本知识
如果你现在还没有开始使用Ant,那就要赶快开始学习使用,使自己的开发水平上一个新台阶。 Eclipse中已经集成了Ant,我们可以直接在Eclipse中运行Ant。 以前面建立的Hello工程为例,创建以下目录结构: 新建一个...
TyAdmin:Django基于模型的,无需代码零代码零学习成本管理后台前生成工具,由Django Restful Framework和Ant Design Pro V4驱动 :clapper_board:在线体验演示 账号:tyadmin密码:tyadmin 演示地址: : 没有代码...
jsp学习的相关文档。适合新手迅速上手。
计算机视觉的快速发展使无人机能够执行各种高空探测任务。由于天线干扰源的目标检测领域尚未得到充分探索,因此该行业缺乏针对该特定任务的专用学习样本和检测模型。本文创建了一个天线数据集,以解决重要的天线干扰...
react-redux-saga-antm本项目集成了 react、redux、saga及 Ant Design Mobile,旨在供有这方面学习需求的朋友学习交流。快速启动安装项目依赖npm install运行启动脚本npm start注:没有特别说明时,命令都是在项目根...
o Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows o Not Not Not Not compatible with Gnu Compiler for Java (gcj) Note: Note: Note: Note: If JDK is already installed on your ...
1. 前期准备工作1.1 CentOS联网配置CentOS能连接外网。Linux虚拟机pingwww.baidu.com是畅通的注意...ant-1.9.9-bin.tar.gz(build工具,打包用的)(4)apache-maven-3.0.5-bin.tar.gz(5)protobuf-2.5.0.tar.gz(序列
快速开始 如何获取源代码 $ git clone https://github.com/SKKU-ESLAB/ANT ant 先决条件 $ cd ant $ ./scripts/prepare-ubuntu.sh 要运行机器学习交互示例,请同时下载样本模型。 $ cd ml $ ./download_sample_...
2021年02月01日,新版升级课程“Ant Design Pro实战入门教程”已上传发布,希望客官们能够喜欢,也希望这套课程能够帮您节省大量的学习时间。 Ant Design Pro是一个企业级中后台前端/设计解决方案,秉承了 Ant ...
Reactant-受启发而构建React应用程序的框架。 动机 React是一个用于构建用户界面JavaScript库,但是当我们要基于React开发应用程序时,我们经常不得不做很多构建配置和许多其他库选择(选择和学习React状态库和...