欢迎大家前来白嫖PDF。下图回复:666
本教程致力于最实用教程,个别图片粘贴有丢失,还有来领取原版。
前言
声明:参考来源互联网,有任何争议可以留言。站在前人的肩上,我们才能看的更远。
本教程纯手打,致力于最实用教程,不需要什么奖励,只希望多多转发支持。
我搞Java也有段时间了,对maven的理解停留在能管理依赖、作为仓库使用,那它还能干什么?
我前面发过一些实战项目,很多初学者和爱好者都有用到,但是对其中maven不了解,不知道如何部署。应一位fans同学要求,redert肝一篇maven,各位看官。
这是一篇文档型文章,能对maven有一个完整的了解。
1.什么是Maven?
搞Java都能说出,maven是什么,他都能回答出maven是一个项目管理工具
,这篇文章学习再来一起学习。
Maven是基于项目对象模型(POM Project Object Model),可以通过一小段描述信息(配置文件)来管理项目的构建、报告和文档的软件项目管理工具。
其官网地址为:http://maven.apache.org
这段官方文档已经说的很明白
Maven翻译为“专家”、“内行”;是一个采用纯Java编写的开源项目管理工具,Maven采用了一种被称之为Project Object Model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个声明周期,包括清除、编译、测试、报告、打包、部署等。目前Apache下绝大多数项目都已经采用Maven进行管理. 而Maven本身还支持多种插件,可以方便更灵活的控制项目, 开发人员的主要任务应该是关注业务逻辑并去实现它,而不是把时间浪费在学习如何在不同的环境中去依赖jar包、项目部署等。Maven正是为了将开发人员从这些任务中解脱出来而诞生的一个项目管理工具。
2.maven的作用
2.1.Maven的功能
Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
- 什么是项目构建?
- 什么是理想的项目构建?
高度自动化,跨平台,可重用的组件,标准化的
- 什么是依赖?为什么要进行依赖管理?
自动下载,统一依赖管理
- 有哪些项目信息?
项目名称描述,开发人员信息等
2.2.为什么使用maven
下面这几个痛点,相信是每个Java攻城狮都遇到过的。
传统方式管理jar依赖的问题:
jar冲突
jar依赖
jar体积过大
jar在不同阶段无法个性化配置
使用maven方式管理jar依赖的好处:
解决jar冲突
解决jar依赖问题
jar文件不用在每个项目保存,只需要放在仓库即可
maven可以指定jar的依赖范围
3.maven安装和配置
3.1.安装
现在为止应该没有使用jdk1.7以下的吧,如果有,这篇文章可以跳过。
1. 下载Maven
下载地址:http://maven.apache.org/download.cgi
2. 解压文件
解压maven压缩包“apache-maven-3.5.2.bin.zip”到一个路径(尽量编码路径中不要包含中文)
- bin:含有mvn运行的脚本
- boot:含有plexus-classworlds类加载器框架
- lib:含有Maven运行时所需要的java类库
- conf:含有settings.xml配置文件
- settings.xml 中默认的用户库: ${user.home}/.m2/repository[通过- maven下载的jar包都会存储到此仓库中]
3.2.配置
1. 添加环境变量MAVEN_HOME
MAVEN_HOME : E:\maven\apache-maven-3.5.2-bin(注意:配置为你自己的maven路径)
MAVEN_OPTS : -Xms256m -Xmx512m(注意:可以不配置
)
2. 设置系统环境变量path
在Path中追加: %MAVEN_HOME%\bin
3. 验证成功
打开 cmd 输入:mvn -version
4. 配置本地仓库
Maven的默认本地仓库在:${user.home}/.m2/repository;这地址可以在settings.xml中修改指定自定义的仓库路径。
【自定义仓库路径】
找到${maven_home}/conf/settings.xml文件,修改如下:
需要注意的是上图中的自定义路径必须存在。repository是本地仓库,也即本地下载的jar存放路径。
到这里为止,你的项目已经可以打包、部署,做一些简单操作了。
4.maven项目规约
这是一套科学的约定,使用它
什么是Maven项目规约?其实就是maven项目的目录结构。
maven项目的目录结构遵守以下规范:
5.命令行构建maven项目
5.1.命令行构建Java项目
下面通过maven命令,快速构建一个java项目结构。
在命令行中可以通过Maven中的命令(插件)可以自动创建文件结构和自动生成pom.xml文件。
打开cmd,执行以下cmd命令:
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.yiidian -DartifactId=hellojava -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot
执行后结果:
参数说明: #核心命令 mvn 框架:生成 即生成Maven项目最基本的目录结构 mvn archetype:generate #读取archetype-catalog.xml文件的位置;内置的 -DarchetypeCatalog=internal #公司域名倒写 -DgroupId=com.yiidian #项目名称 -DartifactId=hellojava #Maven项目的模板;最简单的Maven项目模板 -DarchetypeArtifactId=maven-archetype-quickstart #项目版本号,snapshot 内测版,release 正式发行版 -Dversion=0.0.1-snapshot
5.2.使用命令行创建web项目
创建web项目时,不但创建目录结构和pom.xml,并创建webapp目录放置web资源文件。
执行以下cmd命令:
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.yiidian -DartifactId=helloweb -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot
执行后结果:
参数说明: #核心命令 mvn 框架:生成 即生成Maven项目最基本的目录结构 mvn archetype:generate #读取archetype-catalog.xml文件的位置;内置的 -DarchetypeCatalog=internal #公司域名倒写 -DgroupId=com.yiidian #项目名称 -DartifactId=helloweb #Maven项目的模板;Maven web项目模板 -DarchetypeArtifactId=maven-archetype-webapp #项目版本号 -Dversion=0.0.1-snapshot
5.3.构建Maven项目命令的使用
注意:进入项目后再操作
mvn clean
清除原来的编译结果
mvn compile
编译
mvn test
运行测试代码;mvn test -Dtest=类名//单独运行测试类
mvn package
打包项目;mvn package -Dmanven.test.skip=true//打包时不执行测试
mvn install
将项目打包并安装到本地仓库
mvn deploy
发布到本地仓库或者服务器
我常用的打包命令:
mvn clean install -DskipTests
rodert教你学Maven-实战这一篇就够了(下):https://developer.aliyun.com/article/1536221