关于Maven

Maven是使用项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建, 报告和文档的软件项目管理工具。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的 缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简 单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发布时使用Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven 的出现,解决了开发过程中的 jar 包升级及依赖的难题。它可以对项目依赖的 jar 包进行管理,可以让你的项目保持基本的依赖,排除冗余 jar 包,并且可以让你非 常轻松的对依赖的 jar 包进行版本升级。而这些仅仅是 Maven 最基本的功能,它可以 在这基础上对项目进行清理、编译、测试、打包、发布等等构建项目的工作。 可以说,Maven 是现在 Java 社区中最强大的项目管理和项目构建工具,而更加值得庆 幸的是,这样一个强大的工具,它的使用也是非常简单的。 现在,JavaEE 项目使用的开源软件都可以通过 Maven 来获取,并且,越来越多的公司也开始使用 Maven 来管理构建项目了
Maven的优点和缺点:
优点如下:
1.简化了项目依赖管理:
2.易于上手,对于新手可能一个"mvn clean package"命令就可能满足他的工作
3.便于与持续集成工具(jenkins)整合
4.便于项目升级,无论是项目本身升级还是项目使用的依赖升级。
5.有助于多模块项目的开发,一个模块开发好后,发布到仓库,依赖该模块时可以直 接从仓库更新,而不用自己去编译。
6.maven 有很多插件,便于功能扩展,比如生产站点,自动发布版本等
缺点如下:
1.maven 是一个庞大的构建系统,学习难度大
2.maven 采用约定优于配置的策略(convention over configuration),虽然上手容易, 但是一旦出了问题,难于调试。
3.当依赖很多时,m2eclipse 老是搞得 Eclipse 很卡
4.中国的网络环境差,很多 repository 无法访问,比如 google code, jboss 仓库无法访 问等。
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 有三套生命周期,分别为:
1、clean 周期:主要用于清理上一次构建产生的文件,可以理解为删除 target 目录
2、默认周期, 主要阶段包含: 1)process-resources 默认处理 src/test/resources/下的文件,将其输出到测试的 classpath 目录中, 2)compile 编译 src/main/java 下的 java 文件,产生对应的 class, 3)process-test-resources 默认处理 src/test/resources/下的文件,将其输出到测试的 classpath 目录中, 4)test-compile 编译 src/test/java 下的 java 文件,产生对应的 class, 5)test 运行测试用例, 6)package 打包构件,即生成对应的 jar, war 等, 7)install 将构件部署到本地仓库, 8)deploy 部署构件到远程仓库 3、site 周期 主要阶段包含: lsite 产生项目的站点文档 lsite-deploy 将项目的站点文档部署到服务器
Maven 常用命令:
1)install 本地安装, 包含编译,打包,安装到本地仓库 编译 - javac 打包 - jar, 将 java 代码打包为 jar 文件 安装到本地仓库 - 将打包的 jar 文件,保存到本地仓库目录中。
2)clean 清除已编译信息。 删除工程中的 target 目录。
3)compile 只编译。javac 命令
4)deploy 部署。常见于结合私服使用的命令。 相当于是 install+上传 jar 到私服。 包含编译,打包,安装到本地仓库,上传到私服仓库。
5)package 打包。包含编译,打包两个功能
关于Maven 仓库:
Maven 仓库是基于简单文件系统存储的,集中化管理 Java API 资源(构件)的一个服 务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的 唯一存储路径。得益于 Maven 的坐标机制,任何 Maven 项目使用任何一个构件的方 式都是完全相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构 件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓 库中,供其它项目使用。 对于 Maven 来说,仓库分为两类:本地仓库和远程仓库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值