Maven

概念

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

特性

  • 遵循最佳实践的简单项目设置 - 在几秒钟内启动新项目或模块
  • 所有项目的一致使用 - 意味着新开发人员进入项目的时间不会增加
  • 高级依赖管理,包括自动更新,依赖关闭(也称为传递依赖)
  • 能够轻松地同时处理多个项目
  • 一个庞大且不断增长的库和元数据库,可以立即使用,并与最大的开源项目安排实时可用的最新版本
  • 可扩展,能够轻松编写 Java或脚本语言的插件
  • 只需很少或不需要额外配置即可即时访问新功能
  • 用于在Maven之外进行依赖关系管理和部署的Ant任务
  • 基于模型的构建:Maven能够根据项目的元数据将任意数量的项目构建到预定义的输出类型(如JAR,WAR或分发)中,而无需在大多数情况下执行任何脚本编写。
  • 项目信息的连贯性站点:使用与构建过程相同的元数据,Maven能够生成包含您需要添加的任何文档的网站或PDF,并添加有关项目开发状态的标准报告。在“项目信息”和“项目报告”子菜单下,可以在本网站左侧导航栏的底部看到此信息的示例。
  • 发布管理和发布发布:没有太多额外配置,Maven将与您的源代码控制系统(如Subversion或Git)集成,并根据特定标记管理项目的发布。它还可以将其发布到分发位置以供其他项目使用。Maven能够发布单个输出,例如JAR,包含其他依赖关系和文档的存档,或者作为源分发。
  • 依赖管理:Maven鼓励使用JAR和其他依赖项的中央存储库。Maven附带了一种机制,您的项目客户可以使用该机制从中央JAR存储库下载构建项目所需的任何JAR,就像Perl的CPAN一样。这允许Maven的用户跨项目重用JAR并鼓励项目之间的通信,以确保处理向后兼容性问题。

安装配置

下载安装

下载页面:点我去下载maven
下载解压即可,在安装 Maven 之前,需确保安装JDK,可通过 java -version 命令查看
环境变量配置:
1) MVN_HOME = maven的bin目录所在路径(不包含/bin)
2) 添加环境变量,设置 Path 添加 %MVN_HOME%/bin
3)在控制台执行mvn -v 查看版本信息,以确认安装就绪

配置文件

settings.xml它是用来设置Maven参数的配置文件,可设置本地仓库、远程仓库,代理信息,镜像服务,认证信息等配置。

settings.xml是Maven的全局配置文件,

pom.xml文件是所在项目的局部配置文件,

/home/user/.m2/settings.xml 是用户的配置文件

配置优先级从高到低:pom.xml> user settings > global settings
如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的

本地仓库的路径

<localRepository>/home/maven/repository</localRepository>

镜像加速

  <mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
  </mirrors>

Maven生命周期

Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。Maven的生命周期是抽象的,即生命周期不做任何实际的工作,实际任务由插件完成,类似于设计模式中的模板方法。

Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。

default生命周期:构建项目,重要的phase如下。

1)validate:验证工程是否正确,所有需要的资源是否可用。
2)compile:编译项目的源代码。
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4)package:把已编译的代码打包成可发布的格式,比如jar。
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8)deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

标签: none

添加新评论