1 什么是Maven
- Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建, 告和文档的软件项目管理工具。
- Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
- [相当于iOS cocoapods]
- Maven的好处【 lib】
- 方便jar的管理
- 不需要上传jar包到svn
2如何使用Maven
2.1第一:安装本地Maven
- 先打开浏览器访问maven官 【rz】,下载下图红色的zip文件
- 接着解压文件夹到用户目录下C:Usersguoyongfeng中,【这里解压的路径随机,个人喜欢放在用户目录而已】
- 然后需要配置path环境变量
- 系统变量:MAVEN_HOME = C:Usersguoyongfengapache-maven-3.5.0
- 系统变量:path = %MAVEN_HOME%bin
最后打开命令行,输入mvn -version,出现下面内容表示本地maven安装和配置成功了
2.2第二:了解下Maven的仓库
- 仓库是用来干啥的呢实就是用来存放 上下载到本地的jar包
- 仓库路径默认情况下在用户目录下C:Usersguoyongfeng.m2repository
- 配置仓库路径 在bin目录下的config/settings.xml
在 cmd 中敲并回车执行:mvn help:system
maven默认会从上面的服务器(中央仓库) 下载 jar包到本地
2.3第三 修改setting.xml配置文件
在mirrors中添加下面的内容,使用阿里云服务器下载jar包,因为国外的下载太慢了,把国外的注释不用
<!– 阿里云仓库 –> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror>
<!– 中央仓库1 –> <mirror> <id>repo1</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo1.maven.org/maven2/</url> </mirror>
<!– 中央仓库2 –> <mirror> <id>repo2</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo2.maven.org/maven2/</url> </mirror>
|
2.4第四:安装Eclipse的Maven插件
- 为什么要安装maven插件
- 需要一些命令,需要maven插件
- 因为以前创建动态的javaweb项目,以后我们创建的是一个maven项目,maven也是一个web项目,java项目
- Maven项目是通过pom.xml文件来管理jar包的
- Eclipse安装Maven插件有三种方式
- Eclipse neon的版本默认已经安装了maven的插件
-
如果是旧版本的Eclipse,就需要手动安装maven插件,
- 一种离线安装,比较快
- 一种在线安装,比较慢
第一种方式:把插件放在eclipse的dropins中【练】
- 【离线安装】,把插件放在eclipse的dropins
- 打开preferences点击Maven后,会出现下面的警告框,需要配置下eclipse.ini文件
解决上面的问题,只需要在eclipse.ini文件添加下面两行代码 -vm C:Program FilesJavajdk1.8.0_131binjavaw |
- 接着需要点击maven的User Setting选项,配置路径为本地maven的settings.xml路径,如图
第二种方式:点击Eclipse的Help -> Install New Software
- 在弹出的界面中,添入下面红色框内容点击OK安装【http://m2eclipse.sonatype.org/sites/m2e】
- 装完后重启Eclipse
安装完后,会在Eclipse的Preference偏好设置中出现maven选项
第三种方式:点击Eclipse的Help ->Eclipse Marketplace
- 然后在find中搜索maven安装即可
3 Maven常用命令
3.1 Maven项目结构
ProjectName |-src | |-main | | |-java —— 存放项目的.java文件 | | |-resources —— 存放项目资源文件,如spring, hibernate配置文件 | |-test | |-java ——存放所有测试.java文件,如JUnit测试类 | |-resources —— 测试资源文件 |-target —— 目标文件输出位置例如.class、.jar、.war文件 |-pom.xml ——maven项目核心配置文件 |
3.2 eclipse创建Maven简单项目
创建项目前,把eclipse中maven配置文件路径改下
|
|
|
<project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”> <modelVersion>4.0.0</modelVersion> <groupId>com.gyf</groupId> <artifactId>test1</artifactId> <version>0.0.1-SNAPSHOT</version> <!– 添加依赖 –> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> </dependencies> </project> |
在学习下面的命令前,打开终端切换到项目路径
3.3 mvn compile
编译
- 完成编译操作
- 执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。
3.4 mvn clean
- 执行完毕后,会将target目录删除。
3.4 mvn test
编译,测试,跑测试用例
- 完成单元测试操作
- 执行完毕后,会在target目录中生成三个文件夹:surefire、surefire-reports(测试 告)、test-classes(测试的字节码文件)
3.4 mvn package
编译,测试,跑测试用例,打包
- 完成打包操作
- 执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war
3.4 mvn install
编译,测试,跑测试用例,打包,最后丢到本地仓库
- 执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作
- 执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用
3.4 mvn 组合命令
- mvn clean compile
- mvn clean test
- mvn clean package
- mvn clean install
3.5 maven插件集成命令
- 当我们安装完maven的插件到eclipse后,插件提供了一些菜单可用
- 演示下clean install test 的效果
如果再使用过程中,遇到下面问题,解决办法
4 项目引用另一个项目
- 现在我们来学习一个maven项目引用另一个maven项目
- 首先创建一个maven简单项目,名为test2
- 然后test2项目里写个单元测试代码,调用test1的service代码
- 实现的关键只需要在test2中添加test1项目的依赖即可,注意下图红色框的内容
5 Maven的核心概念
5.1 坐标
- 在平面几何中坐标(x,y)可以标识平面中唯一的一点。在maven中坐标就是为了定位一个唯一确定的jar包。
- Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范,拥有了统一规范,就可以把查找工作交给机器
- Maven坐标主要组成(GAV) -确定一个jar在互联 位置
groupId:定义当前Maven组织名称 artifactId:定义实际项目名称 version:定义当前项目的当前版本 |
5.2 坐标的查找
- 访问http://www.mvnrepository.com或者http://search.maven.org/ 站
- 假设搜索所spring core,如图然后点击sping,接点选择所需要的版本,就能看到所需要的jar包了
|
5.3 依赖管理
5.3.1 scope 依赖范围
其中依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
- compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
- test:测试依赖范围。只对于测试classpath有效
- provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
- runtime:运行时提供。例如:jdbc驱动
5.3.2依赖传递
- 直接依赖和间接依赖
- test2 依赖 test1,test3依赖test2
- test2 直接依赖 test1,test3间接依赖test1
- 当第二依赖的范围是compile的时候,依赖可以传递
- 当第二直接依赖的范围是test的时候,依赖不会得以传递
- provided和runtime后面有遇到再讲,一般很少用,可以不用掌握。
5.3.3依赖冲突
- 假如test1使用junit4.10依赖,并且scope是compile,那test2,test3都可以使用test1的junit4.10,因为传递下来了
- 假如test2使用junit4.9依赖,那test3会使用【就近的一个依赖】,也就是使用junit4.9
5.3.4可选依赖
- <optional> true/false<optional> 是否可选,也可以理解为是否向下传递。
- 在依赖中添加optional选项决定此依赖是否向下传递,如果是true则不传递,如果是false就传递,默认为false
5.3.5 排除依赖
- exclusions可用于排除依赖,注意exclusions是写在dependency中
5.4 生命周期【了解】
- Maven生命周期就是为了对所有的构建过程进行抽象和统一。
- 包括项目清理、初始化、编译、打包、测试、部署等几乎所有构建步骤。
- 生命周期可以理解为构建工程的步骤。
在Maven中有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
- Clean Lifecycle: 在进行真正的构建之前进行一些清理工作。
- Default Lifecycle: 构建的核心部分,编译,测试,打包,部署等等。
- Site Lifecycle: 生成项目 告,站点,发布站点。
5.4.1 Clean生命周期:清理项目
Clean生命周期一共包含了三个阶段:
pre-clean 执行一些需要在clean之前完成的工作 clean 移除所有上一次构建生成的文件 post-clean 执行一些需要在clean之后立刻完成的工作 |
- 也就是说,mvn clean 等同于 mvn pre-clean clean
- 如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。
- 这是Maven很重要的一个规则,可以大大简化命令行的输入。
5.4.2 Default生命周期:构造项目
- Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。这里,只解释一些比较重要和常用的阶段
validate generate-sources process-sources generate-resources 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
美指控疑似中国女子携带装有恶意软件的U盘“非法“进入海湖庄园
上一篇
2019年3月2日
哈工大计算机 2019春 软件构造 lab1
下一篇
2019年3月3日
|