03 Ext js学习之初识Maven

Maven

上篇文章提到要探究一下Maven,写这篇文章之前我产生了这样几个问题。

  • Maven是怎么样的一个东西?

  • Maven有什么用?

  • Maven怎样发挥作用,或者说Maven的工作机制是怎样的?

经过一番琢磨、查找资料、请教等之后我对这些问题有了新的理解,特此整理下来。


Maven是怎么样的一个东西?

  1. 首先Maven是Apache公司旗下的产品,与我们熟知的Tomcat同属一家公司。

  2. Maven是基于项目对象模型(pom)的软件项目管理和综合工具,他通过一小段描述信息来管理项目的构建,报告和文档。

  3. Maven包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。


Maven有什么用?

  1. 项目构建。项目构建是Maven的特色功能,Maven 的缺省项目构建规则有较高的可重用性,且常常用两三行 Maven 构建脚本就可以构建简单的项目。Maven提供了一个构建完整生命周期的框架,这在团队开发中有极高的利用价值。开发团队可以自动完成项目的基础工具建设,建立统一标准的目录结构和MAven生命周期,实现高效的团队协助和其他团队任务的无缝连接。

  2. Maven可以自动下载远程仓库和中央存储库中的依赖库文件到本地仓库,让多个项目共享jar包。

  3. Maven还能很方便的进行项目报告的管理,生成站点,管理JAR文件,等等。


Maven的工作机制?

  1. Maven项目的结构和内容在一个XML文件中声明,pom.xml 项目对象模型(POM),这是整个Maven系统的基本单元。

  2. Maven采用远程仓库和本地仓库以及一个类似build.xml的pom.xml,将pom.xml中定义的jar文件从远程仓库下载到本地仓库,各个应用共享同一个本地仓库中的jar,同一个版本的jar只需下载一次,避免每个应用都去拷贝jar。

  3. Maven 中有明确的生命周期(Lifecycle)概念,一个生命周期分为多个阶段,每个阶段叫做phase。一个标准的Lifecycle主要包含以下几个phase:

    validate: 用于验证项目的有效性和其项目所需要的内容是否具备
    initialize:初始化操作,比如创建一些构建所需要的目录等。
    generate-sources:用于生成一些源代码,这些源代码在compile phase中需要使用到
    process-sources:对源代码进行一些操作,例如过滤一些源代码
    generate-resources:生成资源文件(这些文件将被包含在最后的输入文件中)
    process-resources:对资源文件进行处理
    compile:对源代码进行编译
    process-classes:对编译生成的文件进行处理
    generate-test-sources:生成测试用的源代码
    process-test-sources:对生成的测试源代码进行处理
    generate-test-resources:生成测试用的资源文件
    process-test-resources:对测试用的资源文件进行处理
    test-compile:对测试用的源代码进行编译
    process-test-classes:对测试源代码编译后的文件进行处理
    test:进行单元测试
    prepare-package:打包前置操作
    package:打包
    pre-integration-test:集成测试前置操作
    integration-test:集成测试
    post-integration-test:集成测试后置操作
    install:将打包产物安装到本地maven仓库
    deploy:将打包产物安装到远程仓库

**其次每输入一个命令Maven都将之前阶段的内容都做一遍,例如输入
mvn install时,除了deploy阶段之外的都将被有序执行一遍。**

4.Maven 的类库管理是通过在 pom.xml 文件中添加依赖从而引入 jar 包的。其原理是:每一个 jar 都会有独立的坐标,Maven 就是通过坐标来定位到具体的 jar 的。就好像平面坐标系一样,通过 x 轴 和 y轴定位一个坐标点。Maven 定义了这样一组规则:世界上任何一个构件都可以使用 Maven 坐标唯一标识,Maven坐标的元素包括 groupId 、artifactId 、version、packaging 、classifier 。只要我们提供正确的坐标元素,Maven 就能够找到它。


找了很多资料,有说得很深入的也有很浅显的,鉴于初学就先探讨这么多罢,感谢网友的智慧。


另外关于Maven的工作原理,我在找资料时发现几篇写得很好的文章,先收藏,原文链接如下。
maven内部运行原理解析(一)
http://www.jianshu.com/p/0fb5e3fb704d
maven内部运行原理解析(二)
http://www.jianshu.com/p/2f7080a4858c


Maven中settings文件

参考自:http://blog.csdn.net/moshenglv/article/details/52027125

  • maven的配置文件settings.xml存在于两个地方,分别是安装目录和用户目录。前者又被叫做全局配置,对操作系统的所有使用者生效;后者被称为用户配置,只对当前操作系统的使用者生效。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml会覆盖全局的settings.xml。

  • Maven安装后,用户目录下不会自动生成settings.xml,只有全局配置文件。一般要创建用户范围的settings.xml,通常配置Maven时会将安装路径下的settings文件复制到本地仓库目录。

  • Maven默认的settings.xml是一个包含了注释和例子的模板,可以快速的修改它来达到你的要求。

  • 全局配置一旦更改,所有的用户都会受到影响,而且如果maven进行升级,所有的配置都会被清除,所以要提前复制和备份用户本地仓库内的settings.xml文件,一般情况下不配置全局的settings.xml。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值