现在我们已经了解如何定义属性、依赖关系以及如何运行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. java基于socket公共聊天室的实现

    项目:一个公共聊天室功能的实现,实现了登录聊天,保存聊天记录等功能. 一.实现代码 1.客户端 ChatClient.java import java.io.BufferedReader; impor ...

  2. android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别

    android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ...

  3. 实战录 | Kafka-0.10 Consumer源码解析

    <实战录>导语 前方高能!请注意本期攻城狮幽默细胞爆表,坐地铁的拉好把手,喝水的就建议暂时先别喝了:)本期分享人为云端卫士大数据工程师韩宝君,将带来Kafka-0.10 Consumer源 ...

  4. CentOS 6.5 x86_64系统手动释放内存

    1.查询当前内存使用情况和释放缓存的参数 redismaster 10:29:24 [~] [root] free -m total used free shared buffers cachedMe ...

  5. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

  6. 【IOS】Xcode7以上免证书真机调试

    Xcode7之前,想要真机调试,必须花99刀购买开发者账号,而且步骤繁琐,需要下载证书.随着Xcode7的推出,大幅度的简化了真机调试的步骤,对ios开发工作者和正在学习ios开发的众多码农们,可以说 ...

  7. (Python)继承

    面向对象的另一个特性是继承,继承可以更好的代码重用. 例如一个学校里面的成员有老师.学生.老师和学生都有共同的属性名字和年纪.但老师还有它自己的属性,如工资.学生也有它的属性,如成绩. 因此我们可以设 ...

  8. 大前端学习笔记整理【一】CSS盒模型与基于盒模型的6种元素居中方案

    概览 CSS盒模型,规定了元素框来处理元素的 内容.内边距.边框和外边距的方式 元素部分是指内容部分,也是最实际的内容,包围内容的称之为内边距,内边距外围是边框,边框外围就是外边距:且外边距是透明的, ...

  9. 【转】怎样查出SQLServer的性能瓶颈

    怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...

  10. 如何用Matlab将cell数据写入文件

    我们知道,一般的文件读写函数是不接受直接将cell内容(非数值)直接写入文件的, 例如:dlmwrite('o.txt', C, 'delimiter', '\t');%C 为cell类型数据,会报错 ...