主要内容
1. maven简介
-
官方描述
Maven是项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。 -
常见的构建工具
- Ant
- Maven
- Gradle
-
maven的特性
- 依赖管理系统
- 多模块构建
- 一致的项目结构
- 一致的构建模型和插件机制
-
maven目录结构
目录 用法 ${basedir} 存放pom.xml文件及其它子目录 ${basedir}/src/main/java 存放java源码 ${basedir}/src/main/resources 存放资源文件,如html、图片等 ${basedir}/src/test/java 存放java测试代码 ${basedir}/src/test/resources 存放测试用的资源
2. mvane安装配置
-
检查jdk版本
jdk版本1.7及以上版本 -
maven下载地址
官网下载:http://maven.apache.org/download.html -
配置环境变量
下载解压缩后,将maven目录下的bin目录路径配置到系统变量的path下,并在用户变量下新增MAVEN_HOME,配置为maven根目录路径
注:目录不要有中文和空格 -
检查maven是否配置成功
dos窗口下使用mvn -v命令查看maven版本,成功显示如下:
-
配置maven本地仓库和远程仓库镜像
打开maven根目录–>conf目录–>settings.xml文件
在settings标签对中加入
<localRepository>${你的仓库地址}\repository</localRepository>
并在mirrors标签对中加入
<mirror> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
配置阿里云的远程仓库镜像,当然你也网上可以选择其它镜像仓库
最后将settings.xml文件拷贝到c:\用户\你的用户名\.m2 目录下
3. maven操作命令
-
命令格式如下:
mvn [plugin-name]:[goal-name]
执行
plugin-name
的goal-name
目标 -
常用命令
命令 作用 mvn -version 查看maven版本信息 mvn clean 把项目下编译好calss信息(target目录)清除掉 mvn compile src下的代码编译 生成target目录生成class文件 mvn test 编译src下test包下的代码以及对main目录下src的代码编译 mvn package 生成target目录,根据pom.xml配置生成jar或war包 mvn install 生成target目录,并把生成的war包放到了本地仓库 mvn deploy 打包并发布项目到远程仓库 mvn site 生成项目相关信息的网站 mvn dependency:tree 打印出项目的依赖树 mvn tomcat7:run 在tomcat容易中运行web应用 mvn archetype:generate 创建maven的普通java项目 -
命令参数
maven命令在使用的时候可以通过来添加参数以执行自定义操作- 通过
-D
传入属性参数
例如:mvn package -Dmaven.test.skip=true
这样就可以让maven在执行package操作的时候跳过单元测试阶段 - 通过
-P
指定Profile配置
例如:mvn package -Pdev
- 通过
4. IDEA集成maven
打开IDEA -->File -->Other Settings -->Settings for New Projects -->搜索’maven’
5.maven项目创建
- 使用IDEA创建一个java项目
-
选择File --> New --> Project
-
选择maven,配置jdk版本和maen项目模板
创建java项目如下图:
创建web项目如下图:
-
设置项目的GroupId和ArtifactId
-
配置maven
-
检查项目信息,最后点击Finish结束配置
-
等待IDEA初始化maven项目,并在右下角弹出窗口选择自动导入配置
-
配置maven相关命令
点击+
号并选择maven,在Command line设置你要执行的命令
-
执行配置的maven操作,成功后控制台输出如下
-
6.maven依赖
-
依赖的基本配置
- groupid、artifactid、version:组成依赖的基本坐标,通过这个坐标可以准确定位到这个依赖的位置
- type:可以选择jar或者war包形式,默认为jar
- scop:依赖的范围
- optional:标记依赖是否可选
- exclusions:排除传递性依赖
-
依赖范围
- compile
默认依赖范围,此依赖范围对 于编译、测试、运行三种classpath都有效 - test
只对测试classpath有效,在编译主代码和项目运行时,都将无法使用该依赖,例如Junit - provided
只对编译和测试的classpath有效,对运行的classpath无效,例如servlet-api - runtime
只对测试和运行的classpath有效,对编译的classpath无效,典型例子就是JDBC的驱动实现 - system
该依赖与classpath的关系与 provided依赖范围完全一致,但是系统依赖范围必须通过配置systemPath元素来显示指定依赖文件的路径,此类依赖不是由maven仓库解析的,而且往往与本机系统绑定,可能造成构件的不可移植,因此谨慎使用 - import
该依赖范围不会对三种classpath产生影响,该依赖范围只能与dependencyManagement元素配合使用,其功能为将目标pom文件中dependencyManagement的配置导入合并到当前pom的dependencyManagement中
- compile
-
依赖的传递性
假设A->B->C1.0,A->E->C2.0,那么这种情况Maven会根据申明的依赖顺序来进行选择,先申明的会被作为依赖包
当然也可以使用exclusion
排除依赖,用法如下<dependency> <groupId>groupB</groupId> <artifactId>artifactB</artifactId> <version>1.0</version> <exclusions> <exclusion> <groupId>groupC</groupId> <artifactId>artifactC</artifactId> </exclusion> </exclusions> </dependency>
7.maven构建多模块项目
示例源码地址:git@github.com:HelloWorld19930603/Demo.git
8.maven仓库
- 本地仓库
默认是c盘用户目录下.m2/repository目录,当然你也可以在settings.xml文件中指定本地仓库地址,当通过maven寻找依赖的时候,会首先从本地仓库路径下寻找,若没有,则从远程仓库下载到本地,若远程仓库也找不到便会报错了。 - 远程仓库
- 中央仓库
默认配置下,maven下载jar包的地方 - 私服
为了节省宽带和时间而在本地局域网内架设的maven仓库服务器 - 其它公共库
- 中央仓库