1.Maven的简介
1.1简介
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。
1.2项目构建
我们会发现,除了编写源代码,我们每天有相当一部分时间花在了编译,运行单元测试,生成文档,打包和部署等繁琐且不起眼的工作上,这就是构建。如果我们现在还手工这样做, 那成本也太高了,于是有人用软件的方法让这一系列工作完全自动化, 使得软件的构建可以像全自动流水线-样,只需要一条简单的命令,所有繁琐的步骤都能够自动完成,很快就能得到最终结果。
1.3项目构建工具
- Ant构建
最早的构建工具,基于IDE, 大概是2000年有的,当时是最流行java构建工具,不过它的XML脚本编写格式让XML文件特别大。对工程构建过程中的过程控制特别好 - Maven [AVA]
项目对象模型,通过其描述信息来管理项目的构建,报告和文档的软件项目管理工具。它填补了Ant缺点,Maven第一次支持了从网络上下载的功能,仍然采用xmI作为配置文件格式。Maven专注的是依赖管理,使用Java编写。 - Gradle
属于结合以上两个的优点,它继承了Ant的灵活和Maven的生命周期管理,它最后被google作为了Android御用管理工具。它最大的区别是不用XML作为配置文件格式,采用了DSL格式,使得脚本更加简洁。
2.Maven的四大特性
2.1依赖管理系统
- Maven为Java世界引入了-个新的依赖管理系统jar包管理jar 升级时修改配置文件即可。在Java世界中,可以用groupld、artifactld、 version组成的Coordination (坐标) 唯一标识一 个依赖。
- 任何基于Maven构建的项目自身也必须定义这三项属性,生成的包可以是Jar包,也可以是war包或者jar包。
- -个典型的依赖引用如下所示: .
<dependency>
<groupId> javax . serv1et</ groupId>
com. baidu
<artifactId> javax. servlet-api </artifactId> ueditor echarts
<version>3.1.0</version>
</ dependency>
2.1.1坐标属性理解
Maven坐标为各种组件引入了秩序,任何-一个组件都必须明确定义自己的坐标。
- groupld
定义当前Maven项目隶属的实际项目公司名称。(jar包所在仓库路径) 由于Maven中模块的概念, 因此一个实际项目往往会被划分为很多模块。比如spring是- 个实际项目,其对应的Maven模块会有很多 ,如spring-core,spring-webmvc等。 - artifactld
该元素定义实际项目中的一个Maven模块-项目名,推荐的做法是使用实际项目 名称作为artifactld的前缀。比如: spring-bean, spring-webmvc等。 - version
该元素定义Maven项目当前所处的版本。
2.2 多模块构建
项目复查时dao service controller 层分离将一个项目分解为多个模块已经是很通用的一种方式。
在Maven中需要定义一个parent POM作为一-组module的聚合POM。在该POM中可以使用标签
来定义一组子模块。parent POM不会有什么实际构建产出。而parent POM中的build配置以及依赖配置都会自动
继承给子module.
2.3 一致的项目结构
Ant时代大家创建Java项目目录时比较随意,然后通过Ant配置指定哪些属于source, 那些属于testSource等。而Maven在设计之初的理念就是Conversion over configuration (约定大于配置)。其制定了一套项目目录结构作为标准的ava项目结构,解决不同ide带来的文件目录不一致问题。
2.4 一致的构建模型和插件机制
<plugin>
<groupId>org . mortbay . jetty</groupId>
<arti factId>maven-jetty-plugin</arti factId>
<version>6.1.25</versi on>
<confi gurati on>
<scanIntervalseconds> 10</scanIntervalseconds>
<contextPath>/test</contextPath>
</confi guration>
</plugin>
3.Maven的安装配置和目录结构
3.1Maven的安装配置
3.1.1检查JDK的版本
JDK版本在1.7以上
- 通过 Windows + R 调出运行窗口
- 输入cmd,点击进入
- 输入java -version,按回车,得到版本信息
3.1.2 下载Maven
下载地址:https://maven.apache.org/
选择Download
选择版本下载
解压文件,但文件路径目录不能有中文或空格
3.1.3 配置Maven环境变量
打开控制面板->系统安全->系统,选择高级系统设置
点击环境变量
点击新建,创建新的系统变量
变量名(可以随意设置)为MAVEN_HOME
变量值导入文件地址
然后再双击Path,在中Path新建添加%MAVEN_HOME%\bin
进入命令台(windows+R,输入cmd)输入mvn -v
,如出现版本信息,则表示配置成功
3.2认识Maven的目录结构
pom.xml文件包含该项目所有的jar包的依赖和插件的依赖
3.3Maven的编译与运行
3.3.1修改默认仓库位置和镜像
4.Maven命令
作为开发利器的maven,为我们提供了十分丰富的命令,了解maven的命令行操作并熟练运用常见的maven命令还是十分必要的,即使譬如IDEA等I具给我提供了图形界面化工具,但其底层还是依靠maven命令来驱动的。
命令格式:
mvn [p lugin-name] : [goa 1-name]
命令代表的含义:执行plugin-name插件的goal-name目标
4.1 Maven常用命令
4.2 命令参数
上面列举的只是比较通用的命令,其实很多命令都可以携带参数以执行更精准的任务。
4.2.1 -D 传入属性参数
例如:
mvn package -Dmaven. test. ski p=true
以-D开头,将maven. test . skip的值设为true ,就是告诉maven打包的时候跳过单元测试。同理,mvn deploy-Dmaven. test . skip= true代表部署项目并跳过单元测试。
4.2.2 -p 使用指定的Profile配置
profiles定义了各个环境的变量id,filters 中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile中定义的值,resources 中是定义哪些目录下的文件会被配置文件中定义的变量替换。
通过maven可以实现按不同环境进行打包部署,例如:
mvn package -Pdev -Dmaven. test. ski p=true
表示打包本地环境,并跳过单元测试
5.Maven在IDEA的使用
5.1 常用配置
1.进入新项目设置界面
2.设置Maven的位置和镜像
5.2 Maven项目创建
5.2.1创建java项目
1.新建项目
2.项目结构