09年的时候写过一个ant的简单安装和最基本的使用其实就是一个hello world 级别的东西。
最近因为项目需要又用了一次ant来打包,所以把项目中用到的东西再整理下。
1.定义常量
通常是一些路径
<property name="project-src" value="${basedir}/src" />
也有可能是系统环境变量里面的路径
<property environment="env"/> <property name="xx-lib" value="${env.XX_HOME}/lib" />
注意:如果新建一个系统变量, 在Eclipse 不会自动更新你新加的变量,需要重启Eclipse。
获取时间戳
<tstamp> <format property="time" pattern="yyyy-MM-dd hh:mm:ss" /> </tstamp>
2.定义target
基本样子
<target name="jar-all" depends="clean,jar-a,jar-b" description="Builds a.jar, b.jar"> </target>
一个清理文件或者文件夹的target
<target name="clean" description="Removes all generated artifacts"> <delete dir="fouder" /> <delete file="a.jar" /> <delete file="b.jar" /> </target>
对项目中某些文件package打一个jar包,分为两步,先编译,再打JAR包
<target name="compile-a" depends="clean,init"> <mkdir dir="build" /> <javac srcdir="${project-src}" destdir="build" debug="true" deprecation="off" encoding="UTF-8"> <include name="com/tang/test/a/**/*" /> <classpath> <pathelement path="${xx-lib}/xx.jar" /> <pathelement path="${third-part-lib}/log4j-1.2.15.jar" /> </classpath > </javac> </target>
编译好后接下来打包
<target name="jar-a" depends="compile-a" description="Builds a.jar"> <jar basedir="build" destfile="a.jar"> <manifest> <attribute name="Created-By" value="locke." /> <attribute name="Created-Date" value="${time}" /> </manifest> </jar> <delete dir="build" /> </target>
3.引用其他的文件的target
<target name="backend"> <ant antfile="${basedir}/xx_jar.xml" target="jar-all" /> </target>
4.最后给出一个打完整war包的build.xml
<project name="war Builder" default="war-a" basedir="."> <target name="clean"> <delete dir="${tempWebRoot}" /> </target> <target name="init"> <property name="webRoot" value="WebRoot" /> <property name="webRootLib" value="WebRoot/WEB-INF/lib" /> <property name="tempWebRoot" value="tempWebRoot" /> <property name="tempWebRootLib" value="tempWebRoot/WEB-INF/lib" /> </target> <target name="copy" depends="init,clean"> <mkdir dir="${tempWebRoot}" /> <mkdir dir="${tempWebRootLib}" /> <copy todir="${tempWebRoot}"> <fileset dir="${webRoot}"> <exclude name="**/*.war" /> <exclude name="WEB-INF/classes/**/*" /> <exclude name="**/log4j-1.2.15.jar" /> </fileset> </copy> <copy todir="${tempWebRootLib}" file="${basedir}/console.jar"> </copy> </target> <target name="war-a" depends="copy" description="package war"> <war warfile="${basedir}/a.war" webxml="${tempWebRoot}/WEB-INF/web.xml"> <!-- <lib dir="${tempWebRoot}/WEB-INF/lib" /> <classes dir="${tempWebRoot}" />--> <fileset dir="${tempWebRoot}" /> </war> <delete dir="${tempWebRoot}" /> </target> </project>
5. 小技巧
5.1 将多个jar 变成一个jar
<project name="test" default="jarjar" basedir="."> <target name="init"> <mkdir dir="newJar" /> </target> <target name="jarjar"> <jar destfile="newJar/one.jar"> <zipgroupfileset dir="." includes="*.jar" excludes="*.properties" /> </jar> </target> </project>
5.2 打jar包时classpath中包含很多不同jar时
有时候我们写的程序可能包含很多JAR包,如果一个一个写很麻烦不错,还容易出错,最让人受不了的是jar包版本变了之后还需要重新修改编译文件。
<target name="init"> <property name="third-part-lib" value="${basedir}/WebRoot/WEB-INF/lib" description="the third part lib" /> <path id="libPath"> <fileset dir="${third-part-lib}"> <include name="**/*.jar" /> </fileset> </path> <pathconvert property="asmm.classpath" pathsep=" "> <mapper> <chainedmapper> <flattenmapper /> <globmapper from="*" to="WebRoot/WEB-INF/lib/*" /> </chainedmapper> </mapper> <path refid="libPath" /> </pathconvert> </target> <target name="compile" depends="clean,init"> <mkdir dir="build" /> <javac srcdir="${project-src}" destdir="build" debug="true" deprecation="off" encoding="UTF-8"> <classpath> <fileset dir="${third-part-lib}"> <include name="**/*.jar" /> </fileset> <fileset dir="${as-lib}"> <include name="a.jar" /> <include name="b.jar" /> </fileset> </classpath > </javac> </target> <target name="jar" depends="compile" description="Builds power.jar"> <jar basedir="build" destfile="${dest}/${jar-name}"> <manifest> <attribute name="Main-Class" value="com.tang.test.JettyServer" /> <attribute name="Class-Path" value=". lib/a.jar lib/b.jar server_properties.xml log4j.properties ${asmm.classpath}" /> <attribute name="Created-By" value="locke." /> <attribute name="Created-Date" value="${time}" /> </manifest> </jar> </target>
这里我只写出来了部分关键的内容。
相关推荐
3. **`<property>`**:用于设置和获取属性值,这些属性可以在整个构建过程中被引用。例如,设置Java编译器的路径或者项目版本号。 4. **`<classpath>`**:定义类路径,用于指定构建过程中需要的类库和资源文件。 5...
Ant是Apache软件基金会下的一个Java构建工具,它以其XML为基础的构建文件,使得开发者能够定义构建过程中的任务,包括编译、打包、测试等。Ant是Java项目管理和自动化构建的重要工具,尤其在早期的Java EE应用开发中...
3. 配置环境变量:在系统环境变量PATH中添加Ant的bin目录,如C:\ant\bin。 4. 验证安装:在命令行中输入`ant -version`,如果显示Ant的版本信息,则表示安装成功。 三、基本结构与XML配置 1. build.xml:这是Ant的...
4. **文件集(Filesets)**:文件集允许我们指定一组文件或目录,这些可以在任务中使用,比如在编译源代码时指定源代码目录。 5. **条件(Conditions)**:条件可以用来控制构建流程,根据某些条件决定是否执行特定...
本指南将针对初学者,详细介绍Ant的基本概念、安装、配置以及常用任务的使用。 一、Ant简介 Ant的设计理念是“简单就是美”。在Java开发中,当项目变得复杂时,手动管理编译、测试和部署等过程会变得繁琐,Ant则能...
在Java开发过程中,Ant是一个非常重要的构建工具,它允许开发者自动化构建、编译、测试和部署应用程序。本文将深入探讨Ant及其与jar包的关系,帮助Java程序员更好地理解和使用这个强大的工具。 首先,让我们理解...
Apache Ant是一种广泛使用的Java构建工具,它以XML格式定义项目构建过程,允许开发者通过编写build.xml文件来自动化软件构建流程。本指南将深入探讨Ant的基本概念、核心元素、常用任务和命令,帮助你全面理解并熟练...
- **Unix/Linux**:在 `.bashrc` 或 `.profile` 文件中设置 `ANT_HOME` 和 `PATH` 变量,指向 Ant 的安装目录。 ##### 2.2 配置Java环境 确保系统已安装 JDK,并正确设置 `JAVA_HOME` 环境变量,指向 JDK 的安装...
要在Ant中使用JUnit,我们需要在build.xml文件中配置JUnit任务。以下是一个基本的配置示例: ```xml <!-- 添加JUnit库到类路径 --> <!-- 添加项目编译后的类文件 --> <!-- 编译源代码 --> ...
【标题】:“使用Ant管理配置Weblogic” 在Java企业级应用开发中,WebLogic Server是一款常用的中间件,用于部署和管理应用程序。Ant是Apache组织提供的一款构建工具,它基于XML来定义任务,使得构建过程可配置且...
3. **运行Ant**:在命令行中,使用`ant`命令执行构建文件中的目标,如`ant compile`或`ant jar`。 **三、常用Ant任务** 1. **javac**:编译Java源码,支持类路径、源路径、排除文件等选项。 2. **copy**:复制...
Ant以其基于XML的构建文件(build.xml)著称,这种文件定义了一系列的任务(tasks),使得开发过程中的自动化工作得以实现。Ant 1.7.0是Ant的一个早期版本,尽管现在已经有了更新的版本,但对于理解Ant的基本原理和...
Ant使用XML来描述构建过程和依赖关系,使得构建过程可配置且易于跨平台移植。 1. **Ant基本概念** - **构建文件**:在Ant中,构建过程是通过一个名为`build.xml`的XML文件定义的,这个文件包含了所有构建任务和...
在Ant的使用过程中,`build.xml`文件是核心,它包含了构建过程的所有指令和配置。 一、Ant的基本结构 一个典型的Ant构建文件`build.xml`分为几个主要部分: 1. **项目声明(Project)**:文件的开头定义了项目的...
Apache Ant是一种广泛使用的Java构建工具,它通过XML配置文件来定义构建任务,使得开发者能够自动化地编译、打包、测试和部署Java项目。在Ant中,各种任务是通过标签来实现的,这些标签提供了构建过程中的不同功能。...
"ant+ivy+nexus"的组合就是一种常用的Java项目构建和依赖管理解决方案。以下是对这个主题的详细解释: 1. Ant: Ant是Apache软件基金会的一个项目,是一个基于Java的构建工具。它使用XML来描述构建过程和依赖关系,...
在React开发过程中,为了实现应用的个性化样式设计和利用第三方库如Ant Design的美观组件,我们需要正确地管理和引入自定义样式以及库样式。本话题主要关注如何在React项目中配置Webpack或其他构建工具,以实现...
为了将Cobertura集成到Ant构建过程中,需要在build.xml中添加Cobertura任务。这包括初始化Cobertura数据文件,运行测试并记录覆盖率信息,最后生成覆盖率报告。Cobertura提供的Ant任务如cobertura-instrument用于...
Ant是Java开发中广泛使用的自动化构建工具,由Apache软件基金会开发,其设计目标是简化项目构建过程,使开发者能够通过XML配置文件来定义构建任务。 Ant的核心概念是基于任务(task)的,这些任务可以是编译源代码、...