使用Apache Ant 进行Java web项目打包并部署至TOMCAT
Apache Ant介绍
是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。
优点:Ant是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点。跨平台性。Ant是纯Java语言编写的,所以具有很好的跨平台性。操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建文件 是XML格式的文件,所以很容易维护和书写,而且结构很清晰。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环 境中去。
那么我们如何使用呢?这里用一个例子进行演示如何用ANT来编译一个Java web项目。
下载Apache Ant
直接到官方网站下载, 或者直接:
安装Apache Ant
直接解压下载的压缩包,可以看到Ant的目录结构。
Bin目录:Ant命令
Lib目录:Ant所需要的jar包
manual:用户参考文档
配置Apache Ant
1:首先需要安装了JDK,并且配置环境变量。
2:配置ANT_HOME/bin目录即可。(自行配置)
3:测试是否配置成功。
运行命令ant -version查看版本号,配置成功可以看到:
C:\>ant -version
Apache Ant(TM) version 1.9.9 compiled on February 2 2017
C:\>
Apache Ant编译准备
这里用一个Java web项目为例。 看下JavaWeb项目整体目录结构。
├─.settings
├─src
│ └─net
│ └─codingme
│ ├─controller
│ ├─dao
│ ├─mapping
│ ├─po
│ ├─service
│ │ └─impl
│ └─util
└─WebContent
├─attached
├─css
├─fonts
├─js
│ └─google-code-prettify
├─META-INF
└─WEB-INF
├─lib
└─view
└─post
编写用于编译的build.xml
build.xml具体内容。 这里已经把注释已经写的非常清楚,具体内容如下。
<?xml version="1.0" encoding="UTF-8"?>
<project name="BlogV2" default="run" basedir=".">
<!-- java源代码目录 -->
<property name="src.dir" location="src" />
<!-- 构建存放目录 -->
<property name="build.dir" location="build" />
<!-- class文件存放目录 -->
<property name="build.classes" location="${build.dir}/classes" />
<!-- 打包目录 -->
<property name="build.war" location="${build.dir}/war" />
<!-- tomcat根目录 -->
<property name="tomcat.home" location="D:\CodeProgram\tomcat7" />
<!-- tomcat项目存放-->
<property name="tomcat.WebContent" location="${tomcat.home}/webContent" />
<!-- war包名字 -->
<property name="war.name" value="BlogV2" />
<!-- web 根目录 -->
<property name="web.root" location="WebContent" />
<!-- web jar包所在 -->
<property name="web.lib" location="WebContent/WEB-INF/lib" />
<!-- 加载环境变量 -->
<property environment="env" />
<!-- 定义编译时的jar -->
<path id="compile.path">
<fileset dir="${web.lib}" includes="*.jar">
</fileset>
<fileset dir="${tomcat.home}/lib">
<include name="**/*.jar" />
</fileset>
</path>
<!-- 初始化需要的文件夹 -->
<target name="init" description="初始化">
<mkdir dir="${build.dir}" />
<mkdir dir="${build.classes}" />
<mkdir dir="${build.war}" />
<echo>初始化工作结束!</echo>
</target>
<!-- 编译java文件为class -->
<target name="compile" depends="init" description="编译">
<javac destdir="build/classes" srcdir="src" includeantruntime="false" fork="true">
<compilerarg line="-encoding UTF-8 " />
<classpath refid="compile.path" />
</javac>
<echo>初始化工作结束!</echo>
<echo message="编译完成!" />
</target>
<!-- 把项目打包成war包存放在指定位置 -->
<target name="war" depends="compile" description="打包war文件">
<war destfile="${build.war}/${war.name}.war">
<fileset dir="${web.root}" includes="**/*.*" />
<lib dir="${web.lib}" />
<classes dir="${build.classes}" />
</war>
<echo>打包完成!</echo>
</target>
<!-- 拷贝war包到tomcat发布目录 -->
<target name="deploy" depends="war" description="发布">
<copy todir="${tomcat.WebContent}">
<fileset dir="${build.war}" includes="*.war" />
</copy>
<echo>已发布到Tomcat!</echo>
</target>
<target name="clean" description="清理">
<delete dir="${build.dir}" />
<delete dir="${tomcat.WebContent}/${web.name}"/>
<delete file="${tomcat.WebContent}/${web.name}.war"/>
<echo>清理完成!</echo>
</target>
</project>
Build.xml文件的一些解释
<?xml version="1.0" encoding="UTF-8" ?>
build.xml中的第一句话,没有实际的意义。
<project name="BlogV2" default="run" basedir=".">
</project>
包含Ant的所有内容,name即名字,basedir即工作根目录,default即默认操作。
<property name="src.dir" location="src" />
类似于声明变量:即src.dir代表localtion里配置的目录。
<target name="war" depends="compile" description="打包war文件">
<war destfile="${build.war}/${war.name}.war">
<fileset dir="${web.root}" includes="**/*.*" />
<lib dir="${web.lib}" />
<classes dir="${build.classes}" />
</war>
<echo>打包完成!</echo>
</target>
Ant每一件要做的事情我们都需要写 成target的形式,并给出一个名字name,depends="compile"表示在做这个target之前需要先执行compile,description即描述。 中间则是打包成war包的格式需要。
参考上面的build.xml文件,我相信可以解决很多简单的编译问题。
但是Ant的功能远远不止于此,其他参数可以参考官方文档
Apache Ant编译开始
在做了上面的准备工作之后,我们离成功只差一步之遥了。 命令切换到build.xml文件所在目录。 查看当前目录里build.xml里编写的功能 用命令 ant -p(在执行ant命令时默认会使用名字为build.xml的文件)
C:\Users\83981\Desktop\Apache Ant\BlogV2>ant -p
Buildfile: C:\Users\83981\Desktop\Apache Ant\BlogV2\build.xml
Main targets:
clean 清理
compile 编译
deploy 发布
init 初始化
war 打包war文件
Default target: run
C:\Users\83981\Desktop\Apache Ant\BlogV2>
Ant的常用操作:
ant target_name 执行相应的操作。
ant clean 清理文件夹。
ant deploy 进行发布。
C:\Users\83981\Desktop\Apache Ant\BlogV2>ant clean
Buildfile: C:\Users\83981\Desktop\Apache Ant\BlogV2\build.xml
clean:
[echo] 清理完成!
BUILD SUCCESSFUL
Total time: 0 seconds
C:\Users\83981\Desktop\Apache Ant\BlogV2>ant deploy
Buildfile: C:\Users\83981\Desktop\Apache Ant\BlogV2\build.xml
init:
[mkdir] Created dir: C:\Users\83981\Desktop\Apache Ant\BlogV2\build
[mkdir] Created dir: C:\Users\83981\Desktop\Apache Ant\BlogV2\build\classes
[mkdir] Created dir: C:\Users\83981\Desktop\Apache Ant\BlogV2\build\war
[echo] 初始化工作结束!
compile:
[javac] Compiling 30 source files to C:\Users\83981\Desktop\Apache Ant\BlogV2\build\classes
[echo] 初始化工作结束!
[echo] 编译完成!
war:
[war] Building war: C:\Users\83981\Desktop\Apache Ant\BlogV2\build\war\BlogV2.war
[echo] 打包完成!
deploy:
[copy] Copying 1 file to D:\CodeProgram\tomcat7\webContent
[echo] 已发布到Tomcat!
BUILD SUCCESSFUL
Total time: 6 seconds
C:\Users\83981\Desktop\Apache Ant\BlogV2>
项目已经编译并打包成war格式拷贝至指定的tomcat目录 操作结束,关于Ant的其他命令可以执行ant -help进行查看。