Maven

1.Maven概括

1.1 项目集成jar的问题

项目中jar包资源越来越多,jar包的管理越来越沉重。常规的jar包管理主要存在以下的问题:

1.繁琐

要为每个项目手动导入所需的jar,需要搜集全部jar

2.复杂

项目中的jar如果需要版本升级,就需要再重新搜集jar

3.冗余

相同的jar在不同的项目中保存了多份

那么怎么样才能方便快捷的管理我们项目中的jar包呢?

1.2Maven

目前开发中常用的项目管理工具主要就是:Maven和Gradle

Maven(/ˈmeɪvn/):Maven这个单词来自于意第绪语(犹太语),意为知识的积累.

Maven是一个基于项目对象模型(POM)的概念的纯java开发的开源的项目管理工具。主要用来管理java项目,进行依赖管理(jar包依赖管理)和项目构建(项目编译、打包、测试、部署)。此外还能分模块开发,提高开发效率。

Gradle([ɡredl]):是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。

官网:http://maven.apache.org/

下载链接:http://maven.apache.org/download.cgi

2.Maven安装

2.1 下载和安装

1.下载Maven

访问:http://maven.apache.org/download.cgi

下载.png

2.Maven解压

将下载的文件,选择合适的目录进行解压即可

解压.png

3.环境配置

Maven需要jdk环境,所以请保证计算机配置了jdk

MAVEN_HOME = maven的安装目录

环境1.png

path = maven的安装目录下的bin目录

环境2.png

4.cmd测试

mvn -version

3.Maven仓库

3.1仓库的分类

存储依赖的地方,体现形式就是本地的一个目录

仓库中不仅存放依赖,而且管理着每个依赖的唯一标识(坐标),Java项目凭坐标获取依赖。

仓库.png

3.2本地仓库

即在settings.xml中配置的目录

使用过了的依赖都会自动存储在本地仓库中,后续可以复用

maven的conf目录中有setting.xml,事maven的配置文件,做如下配置:

这样后面本机项目中依赖的jar都是下载到本地仓库:

  1. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
  4. http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5. <!-- localRepository
  6. | The path to the local repository maven will use to store artifacts.
  7. |
  8. | Default: ${user.home}/.m2/repository
  9. <localRepository>/path/to/local/repo</localRepository>
  10. -->
  11. <!-- 选择一个磁盘目录,作为本地仓库 -->
  12. <localRepository>H:\repository</localRepository>

本地仓库目录.png

3.3中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,不用任何配置,maven中内置了中央仓库的地址。

其中包含了绝大多数流行的开源Java构件。

https://mvnrepository.com/ 可以搜索需要的依赖的相关信息(仓库搜索服务)

http://repo.maven.apache.org/maven2/ 中央仓库地址

3.4公共仓库

除中央仓库之外,还有其他远程仓库。

比如aliyun仓库(http://maven.aliyun.com/nexus/content/groups/public/

中央仓库在国外,下载依赖速度过慢,所以都会配置一个国内的公共仓库替代中央仓库

maven的conf目录中有 settings.xml 实现公共仓库配置

  1. <!--setting.xml中添加如下配置-->
  2. <mirrors>
  3. <mirror>
  4. <id>aliyun</id>
  5. <!-- 中心仓库的 mirror(镜像) -->
  6. <mirrorOf>central</mirrorOf>
  7. <name>Nexus aliyun</name>
  8. <!-- aliyun仓库地址 以后所有要指向中心仓库的请求,都会指向aliyun仓库-->
  9. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  10. </mirror>
  11. </mirrors>

3.5 Maven私服

公司范围内共享的仓库,不对外开放。可以通过 Nexus来创建、管理一个私服。

nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问.

下载地址:http://www.sonatype.org/nexus/go

私服仓库.png

4. Idea整合Maven

4.1 idea 配置Manven

在idea中关联本地安装的maven,后续就可以通过idea使用maven,管理项目

idea配置.png

4.2 Idea创建Maven项目

新建项目,要选择Maven选项

Idea创建项目.png

创建项目.png

5.Maven依赖

5.1 依赖的生命周期

Jar包生效的时间段,即Jar的生命周期,项目中导入的依赖可以做生命周期的管理

标记 周期
compile 缺省值,适用于所有阶段(测试运行,编译,包)
provided 类似complie,期望JDK、容器或者使用者会提供这个依赖。如servlet-api.jar;适用于(测试运行,编译)阶段
runtime 只在运行时使用,如mysql的驱动jar,适用于(运行,测试运行)阶段
test 只在测试时适用,适用于(编译,测试运行)阶段,如junit.jar
system Maven不会在仓库中查找对应依赖,在本地磁盘目录中查找;适用于(编译,测试运行,运行)阶段

maven生命周期.png

6.Maven指令

6.1 Maven面板

idea中有Maven面板,其中可以快速执行Maven指令

1.compile 编译

2.clean删除target

3.test运行测试test case junit/testNG

4.package 打包

5.install 把项目install到local repo

6.deploy 发本地jar发布到remote