Ant与Maven介绍

1 Ant

1.1 Ant简介

Ant是一种基于Java的build(编译,打包)工具。

这里首先我们来回顾一个知识点,一段java程序编写完成后,是怎么部署到服务器上进行测试?

我们都知道最原始的操作是敲命令行,假如你编写好一段输出helloword程序,版本发布需要哪些指令呢?

你需要进行编译,打包和运行,具体如下:

# 进入工作目录

# cd workspace

# 将.java文件编译成.class文件

# javac classname.java

# 运行程序

# java classname

# 打包 

# jar cvf demo.jar com(cvf创建并显示详细信息;com是源码最上层目录)

# 运行

# java -jar demo.jar

随着.java文件,以及依赖的包不断增加,发布一个完整的项目采用命令行的方式会显得非常的复杂和重复。于是市场上诞生了很多基于java的build工具,如ant和现在市场上主流的maven。

1.2 Ant项目目录结构

在这里插入图片描述

1.3 Ant发布版本

一个Ant项目的构建主要分一下几步

1.3.1安装Ant

(1)官网下载,此处省略

(2)配置环境变量

# 注意是Ant的安装目录,不是bin子目录

# SET ANT_HOME=D:/jakarta-ant-1.5.1

# SET PATH=%PATH%;%ANT_HOME%/bin;

(3)验证是否安装成功

# ant -version

1.3.2认识build.xml文件

(1)这就是一个简单的ant文件

<project default="hello">

 
<target name="hello">

    <echo message="hello , ant">

 
</target>

</project>

(2)保存为build.xml文件,进入文件所在目录:输入ant

# cd /path

# ant

会看到

在这里插入图片描述

分析:从上面的例子中,我们可以看到。build.xml简单的有以下级别:

·project(project标签是build文件的根元素,可以包括一个或多个target,default属性是必须的,并且指明默认执行的target。因为ant命令无参数指定时会运行default target)

·target(这个在后面有更深入的讨论,这里只要知道target的name属性是必须的就好了)

    ·task(ant中的最小单元,一般就是执行一些命令了)

    这个树形关系是最基本的build文件结构。

1.3.3创建一个可以:编译-打包-运行程序的build.xml文件

在这里插入图片描述

(1)这个工程的默认执行是compile。这个target的task是执行javac 命令(ant所支持的命令,后面的“java”也是)编译java文件。

srcdir指定要编译的Java文件的所在位置。

(2)第二个target是jar,后面这个depend="compile"很关键。

表明命令之间的以来关系(我们总不能不编译就打包或者运行吧)。

注意一下,在jar任务里还指定生成manifest(manifest包含了应用描述、接口声明、页面路由信息的java配置文件)文件

(3)最后一个是run这个target,运行就是调用java命令就可以了,指定好相应的参数。

另外,fork="true"表示请求用一个新的JVM运行。

1.3.4 Ant运行

这里以3创建的build.xml为例

# 编译

# ant compile

# 打包

# ant jar

# 运行

# ant run

1 Maven

1.1 Maven简介

Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。Maven除了具备Ant的功能外,还增加了以下主要的功能:

1)使用Project Object Model来对软件项目管理;

2)内置了更多的隐式规则,使得构建文件更加简单;

3)内置依赖管理和Repository来实现依赖的管理和统一存储;

4)内置了软件构建的生命周期;

1.2 POM(Project Object Model)

每一个Maven工程都包含一个pom.xml文件,存储了该工程相关的信息,从而达到一定的项目管理的功能。例如包含了工程的配置,工程的路径,依赖等信息。

典型的pom.xml如下:

在这里插入图片描述

1.3 Maven项目目录结构

在这里插入图片描述
英文版

在这里插入图片描述

1.4依赖管理和Repository

Maven的dependence management用来管理所有此project的dependences,且在dependence repository中自动查找和下载dependence。

1) 依赖管理

例如以引用MySQL的jar包为例,如下:

< dependencies>

< dependency>

< groupId>mysql

< artifactId>mysql-connector-java

< version>5.1.2

< /dependency>

< dependencies>

< /dependencyManagement>

< groupId>mysql

< artifactId>mysql-connector-java

< /dependency>

2)dependence repository

更好的办法是公司或每个team有自己的repository,例如下图:

Local Repository:本地仓库,自己使用的仓库

Maven Central Repository:Maven中心仓库,远程下载线上分享的可用依赖

Term Central Repository:团队开发的共享仓库
在这里插入图片描述

1.5 Maven内置的生命周期

maven内置的生命周期有三个default,clean和site

1.5.1 default生命周期

构建生命周期主要有以下几个阶段:

·
validate,验证工程是否正确,所有需要的资源是否可用。

·
compile,编译项目的源代码。

·
test-compile,编译项目测试代码。

·
test,使用已编译的测试代码,测试已编译的源代码。

·
package,已发布的格式,如jar,将已编译的源代码打包。

·
integration-test,在集成测试可以运行的环境中处理和发布包。

·
verify,运行任何检查,验证包是否有效且达到质量标准。

·
install,把包安装在本地的repository中,可以被其他工程作为依赖来使用

·
deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

·
generate-sources,产生应用需要的任何额外的源代码,如xdoclet。

构建生命周期是每个Maven工程的核心。

1.5.2 clean生命周期

处理工程的清理工作,包含3个阶段:pre-clean, clean, post-clean。

1.5.3 site生命周期

处理工程site文档的生成和部署,包含下列阶段:

pre-site, site, post-site 和site-deploy,其中site-deploy用来将site文档部署到指定的web server上。

1.6 Maven常用指令

# 清空

# mvn clean(清除编译后目录,默认是target目录)

# 编译

# mvn compile

# 打包

# mvn package

# 运行测试

# mvn test

# 安装jar包到本地仓库中

# mvn install xxx

 
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐