maven基础

一.什么是 Maven?
Maven 使用项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建, 报告和文档的软件项目管理工具。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发布时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven 的出现,解决了开发过程中的 jar 包升级及依赖的难题。它可以对项目依赖的 jar 包进行管理,可以让你的项目保持基本的依赖,排除冗余 jar 包,并且可以让你非常轻松的对依赖的 jar 包进行版本升级。而这些仅仅是 Maven 最基本的功能,它可以在这基础上对项目进行清理、编译、测试、打包、发布等等构建项目的工作。可以说,Maven 是现在 Java 社区中最强大的项目管理和项目构建工具,而更加值得庆幸的是,这样一个强大的工具,它的使用也是非常简单的。
现在,JavaEE 项目使用的开源软件都可以通过 Maven 来获取,并且,越来越多的公司也开始使用 Maven 来管理构建项目了。
二.Maven 和ANT 的区别
1.maven&ant 同属 apach 是流行的构建工具。
都是为了简化软件开发而存在的。但是 maven 因为自身管理一个项目对象模型(project object model),这个模型其实就是抽象了一个项目的开发流程,它包含了一个项目的生命周期的各个阶段,并将这个周期固定下来,这也就是约定大于配置。约定大于配置的意思就是,我 maven 将项目开发的各个阶段固定起来了,每个文件的存放位置,每个阶段要生成什么文件、保存为什么格式并且要把它放在什么位置,我都固定好了。我知道一个软件是怎么开发出来,如果一个项目要使用 maven,可以,但你要遵循我的规则,文件目录不要乱建乱放,只有这样 maven 才会将源码用起来。这就是约定大于配置,因为 maven 已经将流程固定下来了,只要遵守约定,就不需要自己手动去配置了,这将大大地提高开发效率。
就像是开车一样,只要知道点火、油门、方向、刹车,就可以将车子开东起来(当然出于安全和法律考虑,还是要考驾照的。),关于车子内部的传动原理,电气原理,工程原理,普通人并不需要了解多少,日常够用就好了。这也是约定大于配置的一个例子。配置就是自己造一辆车去开,有必要,有能力,有时间吗?
2.maven 的中央仓库和 pom.xml 文件。中央仓库统一存放了开发用到的各种 jar 包,要用时只需要添加依赖到 pom 文件中,maven 就会自动下载,当然为了方便一般会在本地建一个仓库,减少下载时间。pom 文件是 maven 的配置文件,maven 就是通过管理 pom 文件和一些核心插件来管理项目。当然我前面将 maven 拟人化了,其实 maven 是没有智力的, 一切都是封装好的流程,只是 maven 将很多操作隐藏起来了。
3.ant 的 build.xml 文件。build 文件是 ant 的配置文件,ant 依靠它来执行操作,与 maven 不同的是 ant 没有固定一条程序链。你想要执行什么操作以及操作之间的顺序和依赖关系, 都需要手动添加到 build 文件中,一点一滴都要写清楚,否则 ant 就不会执行。
4.maven 和 ant 区别
Maven 拥有约定,只要遵守约定,它就知道你的源代码在哪里。Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。缺点是运行许多默认目标。而 ant 没有约定,项目生命周期,它是命令式的。所有操作都要手动去创建、布置。甚至连build.xml 文件都需要手动创建。
三.Maven 仓库是什么
Maven 仓库是基于简单文件系统存储的,集中化管理 Java API 资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。得益于 Maven 的坐标机制,任何 Maven 项目使用任何一个构件的方式都是完全相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。
对于 Maven 来说,仓库分为两类:本地仓库和远程仓库。
四.Maven 的工程类型有哪些?
POM 工程
POM 工程是逻辑工程。用在父级工程或聚合工程中。用来做 jar 包的版本控制。
JAR 工程
将会打包成 jar 用作 jar 包使用。即常见的本地工程 - Java Project。
WAR 工程
将会打包成 war,发布在服务器上的工程。如网站或服务。即常见的网络工程 - Dynamic Web Project。war 工程默认没有 WEB-INF 目录及 web.xml 配置文件,IDE 通常会显示工程错误,提供完整工程结构可以解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值