现在我们已经了解如何定义属性、依赖关系以及如何运行ant,接下来我们将学习怎样使用ant编译java源代码并生成jar文件。

编译源代码

由于Ant的主要目标就是生成java应用程序,它内置了javac任务来调用java的编译器。此任务一般定义如下

<javac srcdir=”src”  destdir=“build”/>

Ant会寻找src目录下所有以.java为扩展名的所有文件,并对他们调用javac编译器,从而在build目录下生成class文件。Javac任务不仅会编译需要编译的源文件,如果某个类文件已经存在,但是对应的源代码文件自从该类文件生成后没有改过,则不会重新编译此源代码文件。

创建jar文件

在编译java源文件之后,通常会将其归档打包为一个jar文件。Jar任务通常如下定义

<jar destfile=”wufengtinghai.alm.jar”  basedir=”build”/>

此任务将创建一个wufengtinghai.alm.jar文件,并将build下的所有文件打包到此jar文件中。如果没有指定清单文件,Ant则会生成一个基本的清单文件。Manifest属性允许制定一个清单文件,同时也可以使用manifest任务定义清单文件。

<jar destfile="wufengtinghai.alm.jar" basedir="classes">
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="project" value="wufengtinghai.alm"/>
</manifest>
</jar>

生成时间戳

在生成环境中使用当前时间和日期,可以以此种方式标记某个生成何时生成输出的。Ant提供了简单易用的tstamp任务可以完成这个功能。这个任务通常在生成过程开始时调用。Tstamp不产生任何的输出;相反,它会根据当前系统时间和日期设置Ant的相关属性。

DSTAMP:设置为当前日期,默认格式为yyymmdd,例如20150606

TSTAMP:设置为当前时间,默认格式为hhmm,例如1020

TODAY:设置为当前日期,带完整的月份,例如2015年6月6日

那我们可以将我们的jar文件定义为如下

<jar destfile="lucene-${DSTAMP}.jar" basedir="classes"/>

最终我们的生成文件autobuildjava.xml如下

<?xml version="1.0"?>
<project default="dist" name="autobuildjava" basedir="../">
<description>A simple auto build Java project</description>
<property name="srcDir" location="src" />
<property name="buildDir" location="build" />
<property name="distDir" location="dist" />
<target name="init">
<tstamp />
<mkdir dir="${buildDir}" />
<mkdir dir="${distDir}" />
</target>
<target name="compile" depends="init">
<javac srcdir="${srcDir}" destdir="${buildDir}" />
</target>
<target name="dist" depends="compile">
<jar destfile="${distDir}/wufengtinghai.alm-${DSTAMP}.jar" basedir="${buildDir}">
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="project" value="wufengtinghai.alm" />
</manifest>
</jar>
</target>
<target name="clean">
<delete dir="${buildDir}" />
<delete dir="${distDir}" />
</target>
</project>

执行生成控制台输出如下

生成的jar文件和清单文件如下

使用Ant自动化我们的java项目生成的更多相关文章

  1. Java项目生成可执行jar包、exe文件以及在Windows下的安装文件

    1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择 ...

  2. Ant构建与部署Java项目---入门

    原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建 ...

  3. 【图文】 使用ant编译和发布java项目

        开发JavaEE项目经常会碰到修改代码后,项目没有重新编译的问题.老大给指明了一个解决办法:用ant编译项目. ant是apache基金会下的一个项目,是基于Java语言的构建工具.      ...

  4. java项目生成jar,并在cmd中执行jar

    自己写的jar并使用:============Java项目============Jar包的打包在Eclipse中直接打包,具体步骤: 点击右键>export>jar file>取消 ...

  5. eclipse如何为java项目生成API文档、JavaDoc

    当我们的项目很大,编写了很多代码的时候,就需要生成一个标准的API文档,让后续的开发人员,或者合作者可以清晰的了解您方法的使用,那么如何将自己的项目生成API文档呢? 1.点击eclipse的[Pro ...

  6. eclipse如何为java项目生成API文档

    文章转载自: https://www.cnblogs.com/wdh1995/p/7705494.html 当我们的项目很大,编写了很多代码的时候,就需要生成一个标准的API文档,让后续的开发人员,或 ...

  7. 【ANT】java项目生成文件示例

    <?xml version="1.0" ?> <project default="dist"> <property name=&q ...

  8. Java项目生成静态页面

    第一次做项目需要生成静态页面,网上很多大牛对将网页生成静态页面有很多异议.说一下我的看法. 不外乎有以下因素: 1.从页面加载时间来看:静态页面不需要与数据库建立连接,尤其是访问数据量较大的页面,这种 ...

  9. eclipse 中为 java 项目生成 API 文档、JavaDoc

    当我们的项目很大,编写了很多代码的时候,就需要生成一个标准的 API 文档,让后续的开发人员,或者合作者可以清晰的了解您方法的使用. 1.点击 eclipse 的 Project 菜单,选择 Gene ...

随机推荐

  1. 問題排查:类型“System.DateTime”的对象无法转换为类型“System.String”

    最近在擴充資料對接工具的功能 經常會遇到這個狀況 當然還有其他同類提示,例如 int/decimal 無法轉 System.String 等等 無獨有偶 這些錯誤幾乎都是在 DataTable 轉換成 ...

  2. 如何系统地自学一门Python 语言(转)

    转自:http://www.phpxs.com/post/4521 零基础情况下,学一门语言充实下自己,Python,简洁.优美.容易使用,是一个很好的选择.那么如何系统地自学Python呢? 有的人 ...

  3. TSuperEnumerator、TSuperAvlIterator、ObjectFindFirst

    通过 ISuperObject.GetEnumerator 可获取一个 TSuperEnumerator 对象. TSuperEnumerator 主要有: MoveNext 方法.Current 属 ...

  4. Java getResourceAsStream() 方法会缓存文件的问题

    xxx.getClass().getClassLoader().getResourceAsStream("d:/test-config.properties") 这方法确实会缓存文 ...

  5. 4. Prototype(原型)

    意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 适用性: 当要实例化的类是在运行时刻指定时,例如,通过动态装载:或者 为了避免创建一个与产品类层次平行的工厂类层次时:或者 当 ...

  6. Linux服务器上安装织梦CMS

    安装篇 第一步:配置防火墙(默认情况下,端口80和3306是拒绝访问的,在防火墙上进行配置): vi /etc/sysconfig/iptables(在"COMMIT"的上一行加上 ...

  7. AndroidLinker与SO加壳技术之上篇

    1. 前言 Android 系统安全愈发重要,像传统pc安全的可执行文件加固一样,应用加固是Android系统安全中非常重要的一环.目前Android 应用加固可以分为dex加固和Native加固,N ...

  8. 在Xcode中使用Git进行源码版本控制

    http://www.cocoachina.com/ios/20140524/8536.html 资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册   iOS开发 Swift Ap ...

  9. .net 微信分享功能

    微信在国内目前无疑是最火的社交软件,智能手机装机必备. 微信api有java,php,Python语言的demo, 为毛没有C#的范例?兄长今天给各位带来一个.不叫哥(割)了,A股今天又暴跌[3912 ...

  10. [django]在virtualenv下安装的第三方库的使用方法

    在virtualenv下安装的第三方库,例如south, requests等,如果想在django中使用,需要先将库添加到settings.py的INSTALLED_APPS中, 以south, re ...