`
378629846
  • 浏览: 215743 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

ant初探

    博客分类:
  • java
阅读更多

前些天和同事交流,他说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.pdf (411.1 KB)
  • 下载次数: 43
分享到:
评论
1 楼 super_boy 2012-06-29  
不错,学以致用!:D

相关推荐

    JMeter ant Jenkins接口自动化持续集成框架初探

    在本文中,我们将探讨JMeter、ant和Jenkins在这个框架中的作用以及它们如何协同工作来实现高效的接口测试。 首先,我们来看什么是接口测试。接口测试是指对系统组件间接口的测试,主要用于检测外部系统之间以及系统...

    selenium+junit+hudson自动化测试初探

    【Selenium自动化测试初探】 本文旨在探讨如何利用Selenium、JUnit和Hudson构建一个自动化测试框架。Selenium是一款强大的开源Web功能测试工具,支持多种编程语言,如Ruby、Python、Java、Perl和C#。它能直接在...

    网络安全中网络欺骗的作用初探.pdf

    w e m ust con st ant ly imp rove th ef t ow n n etw o rk t echno log y, to b etter sa fegu ard the securi ty o f t h e net w ork env ironm ent £ K eyw or ds£" N et w ork securit y £» ...

    Sword开发文档 开发一站式文档

    3. **开发初探**:创建第一个页面,熟悉Ant Design的组件使用。自定义组件是提高代码复用的关键,因此理解如何创建和使用自定义组件也很重要。此外,设置Mock数据可以帮助在无后端接口时进行开发。 4. **API调用**:...

    SpringBlade 开发手册.pdf

    本手册主要讲解 SpringBlade 的开发手册,包括环境要求、环境准备、基础环境安装、Nacos 安装、Sentinel 安装、Seata 安装、插件安装、工程导入、工程运行、工程测试、开发初探、新建微服务工程、第一个 API、鉴权 ...

    MyP_Proyecto1:本课程的第一个项目,即“建模和编程”,这是一个功能绘图器,它接收一个简单的语法

    《MyP_Proyecto1:Java编程与建模初探——实现功能绘图器》 在编程领域,项目是理论知识与实践结合的最佳体现。本文将深入探讨名为"MyP_Proyecto1"的首个课程项目,它专注于“建模和编程”,尤其通过创建一个功能...

    lucene4.4使用手册.docx

    这意味着搜索“ant”不会匹配到“planting”,并且搜索结果会优先显示与查询条件最相符的条目。 2. **全文检索与数据库检索的差异** 与传统的SQL查询相比,全文检索在处理文本搜索时更有效。SQL查询可能会导致无关...

    基于SPRING框架的平安PAFA架构解析

    **1.5 初探PAFA** 初学者可以通过官方文档或示例项目了解PAFA的基本结构和工作原理。熟悉Spring框架的开发者将更容易上手PAFA。 **1.6 SPRING与PAFA的关系** Spring框架是PAFA的基础,PAFA在其之上进行扩展和定制...

    Chatta:我的第一个 Java GUI 应用程序。 一个客户端服务器IM程序

    **Chatta:初探Java GUI实现的客户端-服务器即时通讯应用** `Chatta` 是一个基于Java编程语言构建的GUI应用程序,它展示了如何利用Java图形用户界面(GUI)技术实现一个简单的客户端-服务器即时通讯(IM)系统。在...

Global site tag (gtag.js) - Google Analytics