Maven的使用
1、 什么是maven
1如今我们构建一个项目需要用到很多第三方的类库,如写一个使用Spring的Web项目就需要引入大量的jar包。一个项目Jar包的数量之多往往让我们瞠目结舌,并且Jar包之间的关系错综复杂,一个Jar包往往又会引用其他Jar包,缺少任何一个Jar包都会导致项目编译失败。
2以往开发项目时,程序员往往需要花较多的精力在引用Jar包搭建项目环境上,而这一项工作尤为艰难,少一个Jar包、多一个Jar包往往会报一些让人摸不着头脑的异常。
3而Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。
Maven的功能
1、 构建
2、 文档生成
3、 报告
4、 依赖
5、 SCMs
6、 发布
7、 分发
8、 邮件列表
约定配置
Maven提倡使用一个共同的标准目录结构,maven使用约定优于配置的原则,大家尽可能的遵守这样的目录结构
Maven的特点
• 项目设置遵循统一的规则。
• 任意工程中共享。
• 依赖管理包括自动更新。
• 一个庞大且不断增长的库。
• 可扩展,能够轻松编写 Java 或脚本语言的插件。
• 只需很少或不需要额外配置即可即时访问新功能。
• 基于模型的构建 − Maven能够将任意数量的项目构建到预定义的输出类型中,如 JAR,WAR 或基于项目元数据的分发,而不需要在大多数情况下执行任何脚本。
• 项目信息的一致性站点 − 使用与构建过程相同的元数据,Maven 能够生成一个网站或PDF,包括您要添加的任何文档,并添加到关于项目开发状态的标准报告中。
• 发布管理和发布单独的输出 − Maven 将不需要额外的配置,就可以与源代码管理系统(如 Subversion 或 Git)集成,并可以基于某个标签管理项目的发布。它也可以将其发布到分发位置供其他项目使用。Maven 能够发布单独的输出,如 JAR,包含其他依赖和文档的归档,或者作为源代码发布。
• 向后兼容性 − 您可以很轻松的从旧版本 Maven 的多个模块移植到 Maven 3 中。
• 子项目使用父项目依赖时,正常情况子项目应该继承父项目依赖,无需使用版本号,
• 并行构建 − 编译的速度能普遍提高20 - 50 %。
• 更好的错误报告 − Maven 改进了错误报告,它为您提供了 Maven wiki 页面的链接,您可以点击链接查看错误的完整描述。
安装maven配置环境变量
Maven 是一个基于Java的工具,所以第一件事就是安装jdk。
检查Java安装
Maven下载地址
http://maven.apache.org/download.cgi
第一步:将maven,最好是3.3.9版本的压缩到任意位置
第二步:配置环境变量
1、 变量名:MAVEN_HOME
2、 变量值:选择maven的解压路径
第三步:配置path变量
1、 变量名:path
2、 变量值:;%MAVEN_HOME%\bin(或者是绝对路径)
第四步:在磁盘创建一个文件夹存放项目.jar文件
·
第五步:打开setting.xml文件(在解压的apache-maven-3.3.9\conf文件夹下),进行修改
D:\maven-respository
第六步:在myeclipse中配置maven
创建maven工程
创建一个web 工程,添加maven支持
出现此图,表示成功!
Maven POM
Pom(Project Object Model,项目对象模型)是maven工程的基本工作单元,是一个xml文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
POM 中可以指定以下配置:
• 项目依赖
• 插件
• 执行目标
• 项目构建 profile
• 项目版本
• 项目开发者列表
• 相关邮件列表信息
在创建 POM 之前,我们首先需要描述项目组 (groupId), 项目的唯一ID。
所有POM文件都需要Project元素和三个必须字段groupid,artifactld,version
父(super)pom
父(super)POM是maven默认的POM。所有的POM都继承一个父POM(无论是否显示定义了这个父POM)。父POM定义了一些可以被继承的默认设置,因此当maven发现需要下载POM中的依赖时,他会到Super pom中配置的默认仓库Http://repo1.maven.org/maven2去下载。
Maven使用effective pom(super pom加上工程自己的配置)来执行相关的目标,它帮助开发者在pom.xml中做尽可能减少的配置,当然这些配置可以被重写
使用一下命令来查看super POM 默认配置
Maven构建生命周期
Maven构建生命周期定义了一个项目构建跟发布的过程
一个典型的Maven构建(build)生命周期是由一下几个阶段组成
为了完成default生命周期,这些阶段(包括其他未在上面罗列的生命周期阶段)
Maven有以下三个标准的生命周期
• clean:项目清理的处理
• default(或 build):项目部署的处理
• site:项目站点文档创建的处理
maven仓库
在maven的术语中,仓库是一个位置,maven仓库是项目中依赖的第三方库。这个库所在的位置叫做仓库。Maven仓库能够帮我们管理构件(主要是jar),他就是放置所有的(WAR,ZIP,POM等等)的地方。
Maven仓库有三种类型
本地(local)
中央(central)
远程(remote)
本地仓库
Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。
运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
中央仓库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。
中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。
中央仓库的关键概念:
• 这个仓库由 Maven 社区管理。
• 不需要配置。
• 需要通过网络才能访问。
要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。
远程仓库
如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。
Maven依赖搜寻顺序
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
• 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
• 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
• 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
• 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
maven阿里云(aliyun)仓库
Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。
第一步:修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,在 mirrors 节点上,添加内容如下:
第二步:pom.xml 文件里添加
Maven构件Java项目
Maven 使用原型 archetype 插件创建项目。要创建一个简单的 Java 应用,我们将使用 maven-archetype-quickstart 插件。
在下面的例子中,我们将在 C:\MVN 文件夹下创建一个基于 maven 的 java 应用项目。