1、编译 .java 文件,生成 .jar 包,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project default="jar">
<!-- fileset数据类型定义了一组文件 dir表示fileset 的基目录 -->
<fileset id="src.path" dir="src">
<!-- include 是用逗号分隔的,需要包含的文件模式列表 -->
<include name="**/*.*"/>
<!-- excludes 是用逗号分隔的需要派出的文件模式列表 -->
<exclude name="**/Test*"/>
</fileset>
<target name="init">
<delete dir="build"/>
<!-- mkdir标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名 -->
<mkdir dir="build"/>
<mkdir dir="build/src"/>
<mkdir dir="build/classes"/>
<mkdir dir="build/dist"/>
</target>
<!-- depends表示依赖的目标 -->
<target name="copySrc" depends="init">
<!-- todir 表示目标目录 -->
<copy todir="build/src">
<!-- 通过 refid 可以引用外部标签 -->
<fileset refid="src.path"></fileset>
</copy>
</target> <target name="compile" depends="copySrc">
<!-- 编译 -->
<javac destdir="build/classes" srcdir="src"/>
</target> <target name="jar" depends="compile">
<!-- 打包 -->
<!-- destfile表示JAR文件名 basedir表示被归档的文件名 -->
<jar destfile="build/classes/hello.jar" basedir="build/src"/>
</target>
</project>

2、在生成的 .jar 文件中的 MANIFEST.MF 文件中添加属性,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project default="jar">
<!-- fileset数据类型定义了一组文件 dir表示fileset 的基目录 -->
<fileset id="src.path" dir="src">
<!-- include 是用逗号分隔的,需要包含的文件模式列表 -->
<include name="**/*.*"/>
<!-- excludes 是用逗号分隔的需要派出的文件模式列表 -->
<exclude name="**/Test*"/>
</fileset>
<target name="init">
<delete dir="build"/>
<!-- mkdir标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名 -->
<mkdir dir="build"/>
<mkdir dir="build/src"/>
<mkdir dir="build/classes"/>
<mkdir dir="build/dist"/>
</target>
<!-- depends表示依赖的目标 -->
<target name="copySrc" depends="init">
<!-- todir 表示目标目录 -->
<copy todir="build/src">
<!-- 通过 refid 可以引用外部标签 -->
<fileset refid="src.path"></fileset>
</copy>
</target> <target name="compile" depends="copySrc">
<!-- 编译 -->
<javac destdir="build/classes" srcdir="src"/>
</target> <target name="jar" depends="compile">
<!-- 打包 -->
<!-- destfile表示JAR文件名 basedir表示被归档的文件名 -->
<jar destfile="build/classes/hello.jar" basedir="build/src">
<!-- manifest标签往META-INF/MANIFEST.MF文件中添加属性 -->
<manifest>
<!-- 如果 jar 可以运行,需要在META-INF/MANIFEST.MF文件中添加Mina-class -->
<attribute name="Mina-class" value="com.learn.ant.HelloWorld"></attribute>
<attribute name="BuildBy" value="hwl"></attribute>
</manifest>
</jar>
</target>
</project>

3、执行 .jar 文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project default="execute">
<!-- fileset数据类型定义了一组文件 dir表示fileset 的基目录 -->
<fileset id="src.path" dir="src">
<!-- include 是用逗号分隔的,需要包含的文件模式列表 -->
<include name="**/*.*"/>
<!-- excludes 是用逗号分隔的需要派出的文件模式列表 -->
<exclude name="**/Test*"/>
</fileset>
<target name="init">
<delete dir="build"/>
<!-- mkdir标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名 -->
<mkdir dir="build"/>
<mkdir dir="build/src"/>
<mkdir dir="build/classes"/>
<mkdir dir="build/dist"/>
</target>
<!-- depends表示依赖的目标 -->
<target name="copySrc" depends="init">
<!-- todir 表示目标目录 -->
<copy todir="build/src">
<!-- 通过 refid 可以引用外部标签 -->
<fileset refid="src.path"></fileset>
</copy>
</target> <target name="compile" depends="copySrc">
<!-- 编译 -->
<javac destdir="build/classes" srcdir="src">
<compilerarg line="-encoding UTF-8"/>
</javac>
</target> <target name="jar" depends="compile">
<!-- 打包 -->
<!-- destfile表示JAR文件名 basedir表示被归档的文件名 -->
<jar destfile="build/dist/hello.jar" basedir="build/classes">
<!-- manifest标签往META-INF/MANIFEST.MF文件中添加属性 -->
<manifest>
<!-- 如果 jar 可以运行,需要在META-INF/MANIFEST.MF文件中添加Mina-class -->
<attribute name="Main-class" value="com.learn.ant.HelloWorld"></attribute>
<attribute name="BuildBy" value="hwl"></attribute>
</manifest>
</jar>
</target> <target name="execute" depends="jar">
<!-- 编译 -->
<echo>基于类路径的classname来完成执行</echo>
<java classname="com.learn.ant.HelloWorld" classpath="build/classes">
<!-- 参数 -->
<arg value="张三"/>
<arg value="李四"/>
<arg value="王五"/>
</java> <echo>基于jar文件完成执行</echo>
<!-- fork="true" 表示基于jdk的环境类执行 -->
<java jar="build/dist/hello.jar" fork="true">
<!-- 参数 -->
<arg value="张三"/>
<arg value="李四"/>
<arg value="王五"/>
</java>
</target>
</project>

Ant学习---第三节:使用Ant实现一个最小的项目编译的更多相关文章

  1. 【转】Ant学习笔记——自己构建Ant编译环境

    自从年初开始用NetBeans6.0,才接触到Ant. 这是今年6月份的一篇Ant学习笔记.安装 1.下载并构建环境.   去官网下载src包和bin包.解压缩它们到同一目录,运行build.bat, ...

  2. Ant学习---第二节:Ant添加文件夹和文件夹集的使用

    一.创建 java 项目(Eclipse 中),结构图如下: 1.创建 .java 文件,代码如下: package com.learn.ant; public class HelloWorld { ...

  3. Ant学习---第一节:Ant安装和简单使用

    一.下载 ant 插件,路径如下: http://ant.apache.org/bindownload.cgi 二.安装 ant 插件,解压下载下来的 ant 插件,配置环境变量(最好系统环境变量), ...

  4. beego学习笔记一:创建第一个beego Web项目 转

    前提工作 环境搭建,可以参考如下两篇教程:搭建Go语言环境1搭建Go语言环境2 安装beego beego 的安装是典型的 Go 安装包的形式: go get github.com/astaxie/b ...

  5. Ant学习实例

    ant   目录(?)[+] Ant学习实例 安装Ant 基础元素 project元素 target元素 property元素 完整示例   Ant学习实例 1.安装Ant 先从http://ant. ...

  6. 用IntelliJ IDEA学习Spring--创建一个简单的项目

    这段时间想学习一下Spring,其实之前学过Spring,只是有些忘记了.而且之前学的时候是适用eclipse学习的,现在好像对IntelliJ这个工具使用挺多的,现在就学习一下这个工具的用法,顺便复 ...

  7. Ant学习-001-ant 基础知识及windows环境配置

    一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...

  8. Ant学习笔记(1) 基础知识

    Ant Apache Ant 是一个基于 Java的构建工具. 下载Ant google.baidu.Windows用户下载zip格式.解压即可. Windows安装Ant Ant本质上是一个Java ...

  9. Ant学习笔记

    前言:这段时间在学习Ant,发现这是一个很强大的构建工具.你可能使用了很长一段时间,才发现Ant能做数不完的事.总之,个人觉得,Ant学习门槛低,入门简单,能大概看懂程序,写一些简单的脚本即可,剩下在 ...

随机推荐

  1. (笔记)angular 路由

  2. 条款22 template method 模式

    template method 模式,模板方法模式 其实他和C++模板没有关系. 前者是提供的为派生类设计者提供清晰指示的一种方法,这个事实表示"如何去实现基类所规定的契约" 基类 ...

  3. 一款非常简单的android音乐播放器源码分享给大家

    一款非常简单的android音乐播放器源码分享给大家,该应用虽然很小,大家常用的播放器功能基本实现了,可能有点还不够完善,大家也可以自己完善一下,源码在源码天堂那里已经有了,大家可以到那里下载学习吧. ...

  4. (四)、 nodejs中Async详解之一:流程控制

    为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种 ...

  5. ASP.NET中Button控件的CommandName和CommandArgument属性用法

    在Repeater中的使用: <asp:Repeater ID="rptActionList" runat="server" OnItemCommand= ...

  6. HTML自动换行的问题

    有时文本文字已经超过所在的区域,但是文字还是不自动换行 可以用强制换行 强制不换行div{ white-space:nowrap;}自动换行div{ word-wrap:break-word; wor ...

  7. 日志处理--Logo4Net与文件的并发处理

    本文参考自:http://www.cnblogs.com/jiekzou/ 多线程操作同一个文件时会出现并发问题.解决的一个办法就是给文件加锁(lock),但是这样的话,一个线程操作文件时,其它的都得 ...

  8. varnish状态引擎2

    如何让varnish支持虚拟主机: if (req.http.host = "www.nihao.com") { } 强制对某资源的请求,不检查缓存: 上图表示以/test1.ht ...

  9. web.xml中的url-pattern映射规则

    Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单.servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间. 一,s ...

  10. linux iostat命令详解 磁盘操作监控工具

    Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视. 它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. ...