前些天和同事交流,他说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、示例工程的结构如下:
2、建立build.xml文件:
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
5、ant完成后,build文件夹的结构:
6、hlj_task.jar文件里,MANIFEST.MF的文件内容:
这样我们部署的时候,只要把build目录下的所有文件copy到服务器,然后在bin目录下启动hlj_task.jar就可以了。如果
有更新,我们只需要替换更新的jar即可。
分享到:
相关推荐
ant ant ant antant ant ant antant ant ant ant
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 ...
ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解
ant配置ant配ant配置ant配置置
ANT文件详解 ant介绍 ANT 命令
ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY
ant lib,ant lib ant 所有lib包
Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源
ant帮助文档ant帮助文档ant帮助文档ant帮助文档ant帮助文档ant帮助文档ant帮助文档ant帮助文档ant帮助文档ant帮助文档ant帮助文档ant帮助文档ant帮助文档
1,什么是ant ant是构建工具 2,什么是构建 概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个 3,ant的好处 跨平台 --因为ant是使用java实现...
ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料
ANT使用指南ANT使用指南ANT使用指南ANT使用指南ANT使用指南ANT使用指南ANT使用指南ANT使用指南ANT使用指南
JMeter ant Jenkins接口自动化持续集成框架初探,讲解JMeter基本技能使用
Ant权威指南Ant权威指南Ant权威指南 Ant权威指南Ant权威指南Ant权威指南
ant工具ant资源包
ant 使用入门ant 使用入门ant 使用入门ant 使用入门
Ant Design 是基于 Ant Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。 ant design4.40-web组件库 是基于Axure ,参考Ant Design 的样式而设计的一套模板库,是产品经理必备套件库,Ant Design...
Ant 在开源软件包和企业里面得到了广泛的应用, 这个视频就对 ant 进行了基本的讲解. 1. 手工编译运行项目 anttest; 2. ant.ppt 讲解; 3. 在 Eclipse 中使用 ant; 4. 手工使用 ant; 5. 在 Netbeans 中...