前些天和同事交流,他说ant非常好用,他一直在用,学习资料共享后。这几天研究了一下,还真是不错,这里感谢河东的分享。
之前做过一个java的后台项目需要引入很多jar包,先是用fatjar的方式,将整个工程打成一个jar包进行发布的,一旦修改又要重新打包,上传服务器,费时费力。后来研究了一下MANIFEST.MF文件,可以将引用jar配置到这个文件里,虽然是成功了,但MANIFEST.MF的配置太过麻烦,格式要求过于严格。为此我还专门写了一段生成MANIFEST.MF的代码(见之前的文章MANIFEST.MF的应用以及如何读取jar包外的log4j.properties)。下面我们一步一步用ant来构建发布包。
ant的安装略过,apache网站上下载zip包后直接解压即可。本示例使用的是1.7.0版本。
1、示例工程的结构如下:
![](http://dl.iteye.com/upload/picture/pic/114872/1f19ce83-dad3-3942-92a5-2b2631b57e4e.jpg)
2、建立build.xml文件:
![](http://dl.iteye.com/upload/picture/pic/114874/c6abf0b6-089b-33bf-9133-7a7ce6fe42a4.jpg)
3、打开build.xml,输入如下内容
<?xml version="1.0" ?>
<project name="hlj_task Buildfile" default="compile" basedir=".">
<!-- 源文件路径 -->
<property name="src.dir" value="src" />
<property name="lib.dir" value="lib" />
<property name="config.dir" value="config" />
<!-- build路径 -->
<property name="build.dir" value="build" />
<property name="build.classes" value="${build.dir}/classes" />
<property name="build.lib" value="${build.dir}/lib" />
<property name="build.config" value="${build.dir}/config" />
<property name="build.bin" value="${build.dir}/bin" />
<!-- jar里MANIFEST.MF文件的属性 -->
<property name="jar.name" value="hlj_task.jar" />
<property name="jar.MainClass" value="com.boco.main.Main" />
<property name="jar.buildby" value="Shen XueLiang" />
<!-- 创建build文件夹 -->
<target name="prepare">
<mkdir dir="${build.dir}" />
<mkdir dir="${build.classes}" />
<mkdir dir="${build.lib}" />
<mkdir dir="${build.config}" />
<mkdir dir="${build.bin}" />
</target>
<target name="clean" description="Removes all generated files.">
<delete dir="${build.dir}" />
</target>
<target name="delclass" description="Removes all classes files.">
<delete dir="${build.dir}/classes" />
</target>
<path id="classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="compile" depends="prepare" description="Compiles all source code.">
<javac srcdir="${src.dir}" destdir="${build.classes}">
<classpath refid="classpath" />
</javac>
</target>
<target name="copyjar">
<copy todir="${build.lib}">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</copy>
</target>
<target name="copyconf">
<copy todir="${build.config}">
<fileset dir="${config.dir}">
<include name="*.*"/>
</fileset>
</copy>
</target>
<!-- MANIFEST.MF文件的Class-Path属性 -->
<manifestclasspath property="jar.classpath"
jarfile="${src.dir}/${jar.name}"><!-- 可执行jar文件的路径,jar文件可以不存在,但${src.dir}必须存在 -->
<classpath>
<fileset dir="${lib.dir}"><!-- 依赖jar所在路径 -->
<include name="**/*.jar"/>
</fileset>
</classpath>
</manifestclasspath>
<target name="jar" depends="compile,copyjar,copyconf">
<jar jarfile="${build.bin}/${jar.name}"
basedir="${build.classes}">
<manifest>
<attribute name="Built-By" value="${jar.buildby}" />
<attribute name="Main-Class" value="${jar.MainClass}" />
<attribute name="Class-Path" value="${jar.classpath}" />
</manifest>
</jar>
</target>
<!-- jar包制作完成后,删除classes文件夹 -->
<target name="all" depends="clean,jar,delclass"
description="Cleans,compiles,then builds the JAR file." />
</project>
4、打开cmd窗口,进入工程路径,输入ant all
![](http://dl.iteye.com/upload/picture/pic/114878/58a60009-5b1e-3473-b555-b9d2581b75f8.jpg)
5、ant完成后,build文件夹的结构:
![](http://dl.iteye.com/upload/picture/pic/114880/bfed0877-69fb-3acb-af64-e9483495bff4.jpg)
6、hlj_task.jar文件里,MANIFEST.MF的文件内容:
![](http://dl.iteye.com/upload/picture/pic/114882/16a2d17a-f697-377d-b2ff-c13e06bd0a03.jpg)
这样我们部署的时候,只要把build目录下的所有文件copy到服务器,然后在bin目录下启动hlj_task.jar就可以了。如果
有更新,我们只需要替换更新的jar即可。
分享到:
相关推荐
"Ant ant ant antant ant ant antant ant ant ant" 这个描述可能是在强调Ant在项目构建过程中的重复性和不可或缺性,暗示着它在工程中的频繁使用和核心地位。 Ant的设计理念是“一切都是XML”,它通过XML格式的构建...
ant ant下载 ant配置ant ant下载 ant配置ant ant下载 ant配置
开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6...
org.apache.tools.ant.Main org.apache.tools.ant.Task org.apache.tools.bzip2.CRC org.apache.tools.ant.Target org.apache.tools.ant.Project org.apache.tools.zip.ZipFile org.apache.tools.zip.ZipLong ...
Apache Ant 是一个开源的构建工具,广泛用于Java项目构建,由Apache软件基金会开发。这个"apache-ant-1.6.5-bin.zip"文件是Ant的1.6.5版本的二进制发行版,适合在Windows操作系统上使用。Ant是基于Java的,它的主要...
Ant是Apache组织开发的一款用于构建Java项目的开源工具,它的全称是Apache Ant。自2000年中期推出以来,Ant已经成为Java项目构建的主要选择,它替代了传统的'make'工具,尤其受到开发者们的欢迎。Ant的核心优势在于...
Ant是Apache软件基金会下的一个Java项目,它是一个构建工具,类似于Make或MSBuild,用于自动化Java项目的构建过程,如编译、打包、测试等任务。Libs在编程语境中通常指的是库文件,包含了预编译的代码和资源,供其他...
ANT文件详解 ant介绍 ANT 命令
在IT行业中,Ant是一个非常重要的构建工具,尤其在Java开发领域。标题提到的"ant元件库"实际上是指Apache Ant的库,它是一个基于Java的任务执行系统,用于自动化软件项目的构建过程。Ant以其XML为基础的构建文件...
在IT行业中,Ant是一个至关重要的自动化构建工具,尤其在Java开发领域中被广泛使用。Ant以其XML为基础的构建文件(通常命名为build.xml)为特点,允许开发者定义和执行项目的构建任务。现在,让我们深入探讨一下标题...
Apache Ant 是一个由Java编写的构建工具,它主要用于自动化软件项目的构建、编译、测试和部署过程。这个“ant工具ant资源包”很可能是Apache Ant的一个版本,具体为1.8.3。Ant以XML为基础来描述项目构建的规则和依赖...
Ant是Apache组织开发的一款强大的Java项目构建工具,它基于XML,允许开发者定义构建过程和依赖关系,便于自动化执行编译、测试、打包等任务。在Java开发中,Ant被广泛用于构建大型项目,确保代码的一致性和可重复性...
Axure AntDesign元件库是一款专为Axure设计的高质量组件集合,它旨在帮助原型设计师快速构建基于AntDesign设计系统的Web应用界面。AntDesign是阿里巴巴开源的一款著名前端UI框架,以其优雅、直观、高效的特性广受...
**Ant Design Axure设计库详解** Ant Design是一个广泛使用的开源UI设计框架,源自阿里巴巴集团,专为构建高效、稳定且具有良好用户体验的Web应用而设计。它提供了丰富的组件库,覆盖了网页界面设计的各个方面,...
ANT+协议是一种无线通信协议,主要用于运动健康和健身设备之间的数据传输。该协议由Garmin公司开发,并在开放源码的基础上推广,使得不同厂商的设备能够无缝共享数据,如心率、速度、距离等运动参数。VS2015源文件指...
Ant是Apache软件基金会下的一个项目,它是一款强大的构建工具,主要用在Java环境中,用于自动化构建、测试和部署Java应用程序。Ant使用XML来描述构建过程和依赖关系,使得构建过程可配置且易于跨平台移植。 1. **...
Ant是Apache软件基金会下的一个Java项目,它是一个构建工具,主要用于管理Java项目的构建过程。Ant以其XML为基础的构建文件(build.xml)而著名,这些文件详细描述了如何编译、打包和测试Java应用程序。Ant的核心...
Apache Ant 是一个开源的构建工具,广泛用于Java项目管理,它是Apache软件基金会的产品之一。Ant以其XML为基础的构建文件(build.xml)而著名,这种文件定义了构建过程中的任务序列,使得开发人员能够自动化编译、...
Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源
1,什么是ant ant是构建工具 2,什么是构建 概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个 3,ant的好处 跨平台 --因为ant是使用java实现...